这样配置过后,namenode 可以无密码登录所有 datanode,可以通过命令
“ssh 节点 ip 地址”来验证。
配置完毕,在 namenode 上执行“ssh 本机,所有数据节点”命令,因为 ssh
执行一次之后将不会再询问。
2.1 选择二:配置所有节点之间 SSH 无密码验证
(0)原理
节点 A 要实现无密码公钥认证连接到节点 B 上时,节点 A 是客户端,节点 B
是服务端,需要在客户端 A 上生成一个密钥对,包括一个公钥和一个私钥,而后
将公钥复制到服务端 B 上。当客户端 A 通过 ssh 连接服务端 B 时,服务端 B 就会
生成一个随机数并用客户端 A 的公钥对随机数进行加密,并发送给客户端 A。客
户端 A 收到加密数之后再用私钥进行解密,并将解密数回传给 B,B 确认解密数
无误之后就允许 A 进行连接了。这就是一个公钥认证过程,其间不需要用户手工
输入密码。重要过程是将客户端 A 公钥复制到 B 上。
因此如果要实现所有节点之间无密码公钥认证,则需要将所有节点的公钥都
复制到所有节点上。
(1)所有机器上生成密码对
(a)所有节点用 hadoop 用户登陆,并执行以下命令,生成 rsa 密钥对:
ssh-keygen -t rsa
这 将 在 /home/hadoop/.ssh/ 目 录 下 生 成 一 个 私 钥 id_rsa 和 一 个 公 钥
id_rsa.pub。
(b)将所有 datanode 节点的公钥 id_rsa.pub 传送到 namenode 上:
cp id_rsa.pub datanode01.id_rsa.pub
scp datanode01.id_rsa.pub namenode 节点 ip 地址:/home/hadoop/.ssh
......
cp id_rsa.pub datanoden.id_rsa.pub
scp datanoden.id_rsa.pub namenode 节点 ip 地址:/home/hadoop/.ssh
(c)namenode 节点上综合所有公钥(包括自身)并传送到所有节点上
cp id_rsa.pub authorized_keys 这是 namenode 自己的公钥
cat datanode01.id_rsa.pub >> authorized_keys
......
cat datanode0n.id_rsa.pub >> authorized_keys
然后使用 SSH 协议将所有公钥信息 authorized_keys 复制到所有 DataNode
的.ssh 目录下
scp authorized_keys data 节点 ip 地址:/home/hadoop/.ssh
这样配置过后,所有节点之间可以相互 SSH 无密码登陆,可以通过命令
“ssh 节点 ip 地址”来验证。
配置完毕,在 namenode 上执行“ssh 本机,所有数据节点”命令,因为 ssh
执行一次之后将不会再询问。
评论0