您的位置:首页 > 运维架构

hadoop 配置SSH无密码访问

2016-09-05 21:39 555 查看
Hadoop运行过程中需要管理远端Hadoop守护进程,在Hadoop启动以后,NameNode是通过SSH(Secure
Shell)来启动和停止各个DataNode上的各种守护进程的。这就必须在节点之间执行指令的时候是不需要输入密码的形式,所以我们需要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登录并启动DataName进程,同样原理,DataNode上也能使用SSH无密码登录到NameNode。

 

(1)命令:rpm –qa
| grep openssh

            rpm –qa
| grep rsync

查看是否安装ssh服务,该版本环境已经安装该服务,所以无需安装,没有的情况下需要安装。

(2)配置master无密码登录所有的slave

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode
| Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。

Master机器上生成密码对

命令:ssh-keygen –t
rsa  (生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录)

  

命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys (把id_rsa.pub追加到授权的key里面去)

命令:chmod 600 ~/.ssh/authorized_keys(修改文件"authorized_keys"权限,这步骤很重要,很多莫名其妙的错误有可能就是权限的问题)

 

命令:sudo vi /etc/ssh/sshd_config (修改SSH配置文件"/etc/ssh/sshd_config"),修改如下内容RSAAuthentication
yes # 启用 RSA 认证

PubkeyAuthentication yes # 启用公钥私钥配对认证方式

AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)

 

 

命令:service sshd restart(重新启动服务)

 

命令:ssh localhost  (测试是否成功)

 

下面是把公钥复制到所有的slave节点上去

mkdir .ssh

 

命令:scp ~/.ssh/id_rsa.pub hadoop@192.168.239.129:/home/hadoop/.ssh(记得改成自己的ip,这个是我的slave1的ip,就是把master节点的公钥发送到了slave1的根目录下了)

 

 

到这里,我的master节点的公钥已经发送到了slave1的根目录下,现在登录slave1节点,在slave1节点虚拟机上操作下面的内容

 

命令:chmod 700 ~/.ssh(修改.ssh权限)

 

命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

       chmod 600 ~/.ssh/authorized_keys

        着两行命令是把master的公钥追加到Slave1.Hadoop的授权文件"authorized_keys"中去,第二行命令是修改该授权文件的权限

 

 

 

命令:sudo vi  /etc/ssh/sshd_config    (修改ssh配置文件,和上面master节点配置方式一样,参考下上面的步骤,在此不在重复)

 

 

 

到这里,master节点已经可以无密码访问slave1节点了,现在在master节点虚拟机上操作,测试是否已经成功,命令是:ssh
192.168.239.129,如果不输入密码登录成功就说明master无密码访问slave1成功.

 

 

注意:这里只是配置了master节点无密码访问slave1,还需要配置master无密码访问slave2节点、slave1无密码访问master节点、slave2无密码访问master节点,slave1无密码访问slave2节点、slave2无密码访问slave1节点。每次配置的步骤和上面讲述的master节点无密码访问slave1节点一样的,原理就是:::A若想无密码访问B,就需要把公钥发送给B,B把A发来的公钥添加到自己的授权文件里。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: