转载自https://blog.csdn.net/m0_37822234/article/details/82494556
Hadoop控制脚本(并非守护进程)依赖SSH来执行针对整个集群的操作。为了支持无缝式工作,安装配置好ssh之后,可以是集群内机器的hdfs用户和yarn用户免密码登录。实现的最简单的方法是创建一个公钥/私钥对,存放到NFS中,让整个集群共享该密钥对。如果home目录并没有通过NFS共享,则需要利用ssh-copy-id等方法共享公钥。
注意:免密登录也不是万能的。免密登录时值从一台主机A的用户userA,使用userB用户(B主机的一个用户)登录到主机B。存在着严格的对应关系:比如只能用bigdata1的root使用bigdata2的root用户登录到主机bigdata2:root@bigdata1 ====>root@bigdata2。
实现步骤:
1、在客户端生成一对密钥(公钥/私钥)
基于空口令生成一个新的ssh密钥,以实现无密码登录
#ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa
参数说明:
-t 加密算法类型,这里是使用rsa算法
-P 指定私钥的密码,不需要可以不指定
-f 指定生成秘钥对保持的位置
2、将客户端公钥发送个服务端(其他客户端),使用ssh-copy-id
#ssh-copy-id root@bigdata2
注:经过ssh-copy-id后接收公钥的服务端会把公钥追加到服务端对应用户的$HOME/.ssh/authorized_keys文件中
3、客户端请求(带有自己的用户名和主机名)
4、服务端根据客户端的用户名和主机名查找对应的公钥,将一个随机的字符串用该公钥加密后发送给客户端
5、客户端用自己的私钥进行解密收到的字符串,并将解密后的字符串发送给服务端
6、服务端对比发送出去的和接收到的字符串是否相同,返回登录结果
测试:登录成功