1.假设目前有2台服务器:Master、Slave,现在要设置它们之间免密码ssh登陆。
2.1 配置Master免密码登陆Slave
免密码ssh登录的原理是这样的:
a.Master(NameNode | JobTracker)如果作为客户端,实现无密码公钥认证,来连接到服务器Salve(DataNode | Tasktracker)上,需要在Master上生成一个密钥对,包括1个公钥和1个私钥,然后需要将公钥复制到所有的Slave上。
b.当Master通过SSH连接Salve时,Salve就会生成一个随机数,并且用Master的公钥对随机数进行加密,并且发送给Master。
c.Master收到加密数之后,会使用自己的私钥解密,并将解密数回传给Slave。
d.Slave确认解密数无误之后就允许Master进行连接了。
这就是一个公钥认证过程,这个过程中不需要用户手动输入密码。而具体到实现这个无密码登录的准备过程,重要的是将客户端Master的公钥复制到Slave上。
2.1.1 创建“.ssh”目录
若“.ssh目录”不存在,创建”.ssh目录”:
mkdir ~/.ssh
2.1.2 修改“.ssh 目录”权限。
chmod 700 ~/.ssh
2.1.3 创建Master服务器的公钥和私钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
这个过程会在目录:
~/.ssh/
下生成公钥:id_rsa
和私钥:id_rsa.pub
2.1.4 配置Master本机ssh免密登录做测试
同第1步类似,在Master上配置一下本机的ssh免密登录,将公钥“id_rsa.pub”追加到授权的key里面:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
授权:
chmod 0600 ~/.ssh/authorized_keys
然后使用命令:
ssh localhost
做测试,没问题就可以了。
注意: 登陆之后,记得执行:
exit
退出!
2.1.5 修改SSH配置文件"/etc/ssh/sshd_config"
修改SSH配置文件:/etc/ssh/sshd_config
确保以下内容信息:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
2.1.6 拷贝Master的公钥到Slave上去
执行命令:
scp ~/.ssh/id_rsa.pub hadoop@Slave:~/
2.1.7 配置Slave节点
登录Slave节点,执行以下操作:
a.修改.ssh权限:
chmod 700 ~/.ssh
b.把Master的公钥追加到Slave的授权文件"authorized_keys"中去:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
c.修改该授权文件的权限:
chmod 600 ~/.ssh/authorized_keys
2.1.8 测试免密码登录
在Master上执行:
ssh Slave
其中“Slave”已经在Master的“/etc/hosts”文件中配置过了,如果这个登录不需要输入密码,那么免密码ssh登录就设置成功了!
2.2 配置Slave免密码登陆Master
评论