在学习大数据过程中遇到了一个小问题,
ssh 免密码登录~设置后仍需输密码
Namenode作为客户端,要实现无密码公钥认证,连接到datanode上时需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到datanode上;
当nameNode通过ssh连接到datanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密并发送给nameNode, namenode收到加密数值后,用私钥解密,并将解密数回传给datanode,datanode确认无误后就允许namenode进行连接了;
怎么操作呢?
- 首先进入ssh目录
[hadoop@node1 ~]$ cd ~/.ssh
[hadoop@node1 .ssh]$
生成密钥
ssh-keygen -t rsa
链接本地~仍然需要密码
我内心是拒绝的
查找原因吧~
原来authorized_keys 文件的权限不够
原来权限
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 authorized_keys
-rw------- 1 hadoop hadoop 2590 Mar 2 22:47 id_rsa
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 id_rsa.pub
切换权限
-rw------- 1 hadoop hadoop 563 Mar 2 22:47 authorized_keys
-rw------- 1 hadoop hadoop 2590 Mar 2 22:47 id_rsa
-rw-r--r-- 1 hadoop hadoop 563 Mar 2 22:47 id_rsa.pub
链接本地ls
如果还是无法实现免密登录,那么就看一下 .ssh文件夹的 访问权限
chmod 700 ./ssh
然后将authorized_keys文件夹的权限 改为 600
chmod 600 authorized_keys
这是因为ssh的加密机制导致权限必须是上层权限(700)大于下层权限(600)
实际也就是文件的可访问权限