分发~/.ssh/authorized_keys
Authorized_keys的作用是可以免密码地使用SSH跨节点相互访问
生成密钥
在NameNode上使用ssh-keygen命令生成密钥对
ssh #先运行一下ssh命令
ssh-keygen #生成密钥对(一路回车,如果已经有了,直接使用现有的)
生成的密钥对在~/.ssh中,分别是:
id_rsa #私钥
id_rsa.pub #公钥~
授权公钥
在NameNode上使用cat命令将公钥追加到授权文件,授权后可以免密码访问
cat id_rsa.pub >> authorized_keys (要先进入~/.ssh)
加入已知主机(生成known_hosts文件)
在NameNode上使用ssh slave1访问DataNode,输入yes
成功后使用ssh master访问NameNode,输入yes
known_hosts文件记录了用户已经yes过的公钥指纹,以后不用再反复yes了
配置SSH关闭密钥检查
touch config
在.ssh文件中创建config文件,写入以下内容
Host *
StrictHostKeyChecking no
设置后,以后就不会询问yes了
分发.ssh
将NameNode上的~/.ssh复制到所有DataNode上,让整个集群使用同一对密钥
并且已经授权
scp -r ~/.ssh root@slaveXX:~/
注意事项(一般情况下是正常的,请直接跳过这一小节)
SSH相关的文件对权限比较敏感,其它用户不能有写权限
如果遇到总是需要密码才能登录的问题可以按下面检查并更改权限:
~ #权限700
~/.ssh #权限700
~/.ssh/id_rsa #权限600
~/.ssh/id_rsa.pub #权限600
~/.ssh/known_hosts #权限600
~/.ssh/authorized_keys #权限600
设置权限
chmod 600 ~/.ssh/authorized_keys