你是否也经历过这些场景:
- 管理 200 台服务器,每次部署都要手动输入密码。
- 新同事误操作导致known_hosts文件混乱。
- 密钥泄露后连夜逐台服务器替换。
今天分享一个工业级脚本,3 分钟建立全局SSH信任体系。
一、免密登录的基本原理
在Linux服务器之间实现SSH免密登录,主要依赖公私钥认证 机制:
- 跳板机生成SSH密钥对(私钥&公钥)
- 将公钥(id_rsa.pub)分发到目标服务器的 ~/.ssh/authorized_keys
- 确保权限正确,SSH配置允许公钥认证
- 验证SSH免密登录是否生效。
二、代码实现
1. 读取列表清单
文件中的信息是以“IP 地址:密码”的格式呈现的,同时我们也支持在文件中添加注释以及留空行。以下函数是检查目标文件。
2. 生成密钥
以下函数是在.ssh生成一个秘钥对。
3. 部署公钥文件
秘钥对生成后,通过以下函数部署公钥。
三、脚本演示
先准备设备清单。内容如下:
执行如下命令给脚本赋予执行的权限
执行完成上述命令后,输出如下结果:
脚本亮点:
(1) 支持 IP 和密码文件格式
- 文件格式为 IP:密码,支持注释(以#开头)和空行
- 自动解析并提取 IP 和密码:
(2) 日志记录与审计
- 记录每个节点的部署状态(成功/失败)
- 生成校验报告,验证信任关系是否建立成功
(3) 错误处理与重试机制
- 单节点失败后自动重试(最多 3 次)
- 跳过无效条目,继续处理其他节点。
四、小结
该脚本用于自动化建立SSH双向信任关系,支持从文件导入 IP 地址和密码,并自动清理密码中的空格。通过生成Ed25519密钥、批量部署公钥、配置反向信任和记录审计日志,帮助运维人员高效管理多台服务器的SSH免密登录。