![Hadoop大数据技术开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/392/27563392/b_27563392.jpg)
3.4.2 无密钥登录操作步骤
Hadoop集群需要确保在每一个节点上都能无密钥登录到其他节点。
本例在第2章的基础上继续使用hadoop用户进行操作,使用三个节点(centos01、centos02和centos03)配置无密钥登录,无密钥登录架构如图3-7所示。
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P52_5910.jpg?sign=1738962255-x5gxZzP0AB8roC3HPh8BrZARWDN8TAnT-0-5bf4dd2e8c4348d6f4d39d334778fea6)
图3-7 无密钥登录架构
具体配置方式有两种:手动复制和命令复制,下面分别进行讲解。
1. 手动复制方式
(1)将各节点的公钥加入到同一个授权文件中。
1)在centos01节点中,生成密钥文件,并将公钥信息加入到授权文件中,所需命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P52_5913.jpg?sign=1738962255-SAMw8XOhpKBQ1XuRzM6qV8ZuKQJz765c-0-e26a78006684347b55e14123b8678022)
其中.ssh文件夹为系统隐藏文件夹,若无此目录,可以执行一次ssh localhost命令,则会生成该目录。或者直接手动创建该目录。
2)在centos02节点中,生成密钥文件,并将公钥文件远程复制到centos01节点的相同目录,且重命名为id_rsa.pub.centos02,相关命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P52_5914.jpg?sign=1738962255-ujXDg03opwML9XLbjDZhQBtD2PiTWdK1-0-6267fb33b1dc429205dcd9f5de5f39dd)
3)在centos03节点中,执行与centos02相同的操作(生成密钥文件,并将公钥文件远程复制到centos01节点的相同目录,且重命名为id_rsa.pub.centos03),相关命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P52_5915.jpg?sign=1738962255-gJuHInsilThnrtiiWV6L5We9nsiA6L9h-0-e97343602dc2b942bdb0313f6a6e5155)
4)回到centos01节点,将centos02和centos03节点的密钥文件信息都加入到授权文件中,相关命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6030.jpg?sign=1738962255-NoZ37fE3vbAeE54qoNbLKk1ltyh1uRce-0-6a1a453aa8c1d70f3d66a30866e6f473)
(2)复制授权文件到各个节点。
将centos01节点中的授权文件远程复制到其他节点的相同目录,命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6031.jpg?sign=1738962255-1WCevqlc5R3TqQ5fzZMGCnHG27Sh5UGt-0-4297c27bb1ef1a446e9531a4e002e6b2)
(3)测试无密钥登录。
接下来可以使用ssh命令测试从一个节点无密钥登录到另一个节点。例如,从centos01节点无密钥登录到centos02节点,命令如下:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6032.jpg?sign=1738962255-1qgXOArWyNYM4PimEYHnJgljkCcRyNPP-0-bf0511d4b720d200bc63f7ca768c233c)
成功登录后,记得执行exit命令退出登录。
如果登录失败,可能的原因是授权文件authorized_keys权限分配问题,分别在每个节点上执行以下命令,更改文件权限:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6033.jpg?sign=1738962255-Bwcnle91lTQiTG4gTX57DhuGdwodpjKX-0-6cd63948d963213207608f725acaf36b)
到此,各节点的SSH无密钥登录就配置完成了。
2. 命令复制方式
ssh-copy-id命令可以把本地主机的公钥复制并追加到远程主机的authorized_keys文件中,该命令也会给远程主机的用户主目录(home)、~/.ssh目录和~/.ssh/authorized_keys设置合适的权限。
(1)分别在三个节点中执行以下命令,生成密钥文件:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6034.jpg?sign=1738962255-f7nJGeLuj79GidmS55imzcwZKeOa2fag-0-eea46ccc7eb435d3987055bb88debd05)
(2)分别在三个节点中执行以下命令,将公钥信息复制并追加到对方节点的授权文件authorized_keys中:
![](https://epubservercos.yuewen.com/B7D09D/15825993105224906/epubprivate/OEBPS/Images/Figure-P53_6035.jpg?sign=1738962255-r4BNCrfCYLRCTH1dFNTAE5UK1fEi6v5D-0-d09d56ec90f5d5e443e4219fdae30bbc)
命令执行过程中需要输入当前用户的密码。
(3)测试SSH无密钥登录。
仍然使用ssh命令进行测试登录即可。具体见本节手动复制方式的步骤(3)。
注意
如果不配置无密钥登录,Hadoop集群也是可以正常运行的,只是每次启动Hadoop都要输入密码以登录到每台计算机的DataNode(存储数据的节点)上,而一般的Hadoop集群动辄数百甚至上千台计算机,因此配置SSH无密钥登录是必要的。