关于CentOS7配置SSH免密登录,以及遇到的配置好后还需要输入密码的问题

来源:互联网 发布:java命令行为 编辑:程序博客网 时间:2024/06/08 17:50
Hadoop伪分布式安装,与分布式安装基本一致:
    
    1.准备3个centos7系统,虚拟出三个服务器
        每台服务器上最好都单独创建一个hadoop的用户
    配置本地hosts:
        输入执行:vim /etc/hosts    
            //这是再做DNS映射:加上其他的配置的映射,完整的是
            127.0.0.1    localhost
            192.168.31.132   Hadoop1
            192.168.31.130   Hadoop2
            192.168.31.131   Hadoop3
            192.168.31.131     localhost   ->>这里加的不知道什么意思,加上不会报错 加吧
            
        设置好之后,需要重启服务器:shutdown -r 注意三台服务器都要配置并重启
        
        修改登录的主机名:查看三台主机名分别是不是hadoop1,2,3
        如果不是,输入:hostname hadoop 在输入:hostname
           

    2.安装JDK 略


    CenOS7默认没有启动ssh无秘登录,
        此步骤作用:通过ssh免密码设置,让hadoop能够免密码连接到另一个节点服务器.所有节点之间都应该免密
        (1).进入vim /etc/ssh/sshd_config ,找到以下内容:
            #RSAAuthentication yes
            #PubkeyAuthentication yes
            将注释去掉,三台服务器都要设置
            
            AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径
            (查找这一行,我的是默认开启的,查找时只查找'AuthorizedKeysFile'部分,全部输入找不到)
            
        (2).给当前服务器用户创建秘钥,秘钥有两个,公钥和私钥,公钥可以公开,
            用户得到公钥给数据加密传递给服务器,用公钥加密,必须用私钥解密
            .ssh文件中隐含目录,看不到,但能访问进去,里面就有公钥id_rsa和私钥id_rsa.pub
    
    
            输入命令:ssh-keygen -t rsa,生成key,都不输入密码,一直回车,
            /root目录下就会生成.ssh文件夹,每台服务器都要设置
                192.168.31.132 Master生成:
                +--[ RSA 2048]----+
                |   o.o.. ...     |
                |  o o.B . .      |
                |   . *.. .       |
                |       .o +      |
                |       oS* +     |
                |        + * .    |
                |         *       |
                |          E      |
                |                 |
                +-----------------+
                
                192.168.31.130 Slave1生成:
                +--[ RSA 2048]----+
                |     ..  .       |
                |     .. E .      |
                |      .o =o.     |
                |     .  .oo.     |
                |    .   S   o o .|
                |     .   o . o = |
                |      . . o . *  |
                |       .   + =   |
                |            o    |
                +-----------------+

                192.168.31.131 Slave2生成:
                +--[ RSA 2048]----+
                |         .o+*o+o.|
                |          oBo+.+o|
                |          .=o.oE+|
                |         .o o  o |
                |        S  .     |
                |       . .       |
                |                 |
                |                 |
                |                 |
                +-----------------+
        ----此步骤在主服务器上做:
        (3)
            合并公钥到authorized_keys文件,,进入/root/.ssh目录,通过SSH命令合并
            把id_rsa.pub追加到授权的key里面去
            cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
            
            修改.ssh权限
            chmod 700 ~/.ssh
            
        (4).修改文件”authorized_keys”权限
            chmod 600 ~/.ssh/authorized_keys
        
        (5).重启ssh服务:service sshd restart
        
        (6).把公钥复制所有的Slave机器上
            / scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
            
            scp ~/.ssh/id_rsa.pub root@hadoop2:~/  -->这是我的主机名 hadoop2,也可以写自己的从服务器ip.例如   scp ~/.ssh/id_rsa.pub root@192.168.31.130:~/
            scp ~/.ssh/id_rsa.pub root@hadoop3:~/   -->这个就是131咯
            
        ------------------------------这些操作在从服务器上操作,
        第一步是创建.ssh文件夹.不用创建了,因为执行ssh-keygen -t rsa,就自动生成了
        
        (2).修改权限:chmod 700 ~/.ssh
            
        (3).追加到授权文件”authorized_keys”
            cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
            
        (4).修改权限:chmod 600 ~/.ssh/authorized_keys
        
        (5).删除无用.pub文件:rm –r ~/id_rsa.pub  -->可以不做
            
        (6).在master主机下进行测试
            ssh 192.168.31.130
            ssh 192.168.31.131
            
        下载并解压Hadoop安装包:
            下载地址:北京信息学院镜像http://mirror.bit.edu.cn/apache/hadoop/common/
            解压命令:tar -xzf /root/你的hadoop包
        
        
    -在设置linux的ssh免密登录时,遇到的最大问题就是,三台或更多服务器设置,由于设置的
    服务器主机名没有改,导致控制台显示的都是这个:[root@localhost],其实已经设置好了
    就是由于名字一样,给你的错觉是设置好后使用 ssh 192.168.31.130测试时,没问题,
    可以访问,并没有做退出处理(exit).再次访问 ssh 192.168.31.131 测试,提示输入密码
    .其实这时,已经登录到ip是130的机器上了.已经连接了,当再次连接131时,是在连接
    130的基础上连接的131,才导致连接不上,输入密码的.
    
    至此,ssh免密登录已经设置好了,耽误了两天的时间:
    参考突然明白的原因的帖子:
        1.http://blog.csdn.net/xiaoguaihu12/article/details/65660546 //此贴提到了设置主机名
        2.http://www.iqiyi.com/w_19rrzup6cd.html  //传智的教程.提到了,连接后退出exit.
   
0 0