实验环境
操作系统:Rocky Linux 9.6 x86_64
所有主机登录用户名:
root,密码:Pass-1234。请确保所有主机均能访问 yum 软件源(网络源或者本地源均可)。
| 完整主机名 | IP |
|---|---|
| linux1.skills.com | 10.4.220.101 |
| linux2.skills.com | 10.4.220.102 |
| linux3.skills.com | 10.4.220.103 |
| linux4.skills.com | 10.4.220.104 |
| linux5.skills.com | 10.4.220.105 |
| linux6.skills.com | 10.4.220.106 |
| linux7.skills.com | 10.4.220.107 |
实操
以下所有操作都在
linux1.skills.com上执行。如果使用域名登录到其他主机,需要所有主机做好 DNS 域名解析或者修改
/etc/hosts,否则只使用 IP。
linux1 对其他主机免密
安装 expect 软件包:
1 | yum -y install expect |
在 /root 目录下,新建一个脚本,进入编辑模式(此处示例为 ssh-nopass.sh)
1 | vim ssh-nopass.sh |
在脚本里写入以下内容:
1 | !/bin/bash |
编写完成后,使用以下命令执行脚本:
1 | chmod +x ssh-nopass.sh |
脚本执行完成之后,如果没有意外,linux1 主机应该能访问其他主机了。
配置其他主机相互免密
刚刚的配置只能做到 linux1 免密访问其他主机,但此时其它主机不能互相免密访问。这一步是为了做到其他主机能够相互免密访问。
使用以下命令,让其它主机安装 expect 软件包、将脚本发送到其他主机、执行免密配置脚本:
1 | for a in {2..7}; do scp ~/ssh-nopass.sh root@linux$a.skills.com:~; done #将脚本发送到其它主机 |
执行完上面的指令之后,如无例外,所有的主机就能实现 SSH 免密访问。
注意事项
- 确保
/etc/ssh/sshd_config配置允许root用户登录。 - 确保 DNS 能够正常解析至其他主机的 IP 地址。如果无法解析,请使用 IP 地址。
- 确保每台主机的
root用户密码都相同,否则需要邪修下脚本。 - 确保所有主机能够使用 yum 安装软件包。