实现Linux主机节点之间SSH免密登录教程
在多台 Linux 主机之间进行 SSH 免密登录除了可以提高工作效率,并简化管理任务外,一些技术组件的集群化部署也需要服务器之间能够免密登录,比如 Hadoop、HBase 主节点需要通过 SSH 远程登录从节点以启动从节点中的进程,所以需要配置主节点到所有从节点的免密码登录。下面我将通过样例演示该功能如何实现。
1,准备工作
(1)首先我们准备三台 linux 服务器,具体信息如下:
主机名 | 内网IP |
node1 | 172.31.4.99 |
node2 | 172.31.3.72 |
node3 | 172.31.6.103 |
(2)我们将三台服务器主机名分别配置为 node1、node2、node3,其中 node1 配置命令如下,其它同理:
注意:无论是主机名设置,还是 host 文件配置都是为了使用时更加方便,并不是实现免密登录的必要条件。
hostname node1
(3)同时修改三台服务器的 hostname文件,里面填写对应的主机名,以 node1 为例:
vi /etc/hostname

vi /etc/hosts
(5)然后在里面添加三台服务器的主机名和对应的 IP 地址,使得它们可以通过主机名相互访问:
(2)node2、node3 也执行同样命令生成各自的公钥和秘钥文件。


(2)然后,把公钥复制到需要免密码登录的节点(包括自己)中。
(3)接着在 node2、node3 上均执行如下命令:
(4)这样 node1 到 node2、node3 的免密登录就已经配置完毕了。如果需要 node2 或者 node3 到其他节点的免密登录,可以依照上述操作,把自己的公钥复制到其他节点上即可。
(2)在 node1 节点上使用 SSH 远程登录 node3 节点同样也是免密的。
172.31.4.99 node1 172.31.3.72 node2 172.31.6.103 node3
2,生成公钥和秘钥文件
(1)首先我们在 node1 上执行以下命令,生成公钥和秘钥文件。提示:在执行命令之后,需要连续按 4 次 Enter 键最终回到 Linux 命令行中才表示这个操作执行结束。在按 Enter 键时不需要输入任何内容。
ssh-keygen -t rsa



3,配置免密码登录
(1)公钥和秘钥文件默认会生成在当前用户目录下的 .ssh 目录下,我们到 node1 上查看该目录:ll ~/.ssh/

(2)然后,把公钥复制到需要免密码登录的节点(包括自己)中。
提示:如果是搭建 Hadoop 集群,主节点在启动自身节点上的进程时也是通过 SSH 远程登录的,所以主节点也需要免密码登录自己。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys scp ~/.ssh/authorized_keys node2:~/ scp ~/.ssh/authorized_keys node3:~/

cat ~/authorized_keys >> ~/.ssh/authorized_keys
(4)这样 node1 到 node2、node3 的免密登录就已经配置完毕了。如果需要 node2 或者 node3 到其他节点的免密登录,可以依照上述操作,把自己的公钥复制到其他节点上即可。
4,使用测试
(1)我们在 node1 节点上使用 SSH 远程登录 node2 节点,如果不需要输入密码则表示免密码登录配置是成功的。ssh node2

ssh node3
