今天分享一个工业级脚本,三分钟建立全局SSH信任体系。该脚本用于自动化建立SSH双向信任关系,支持从文件导入 IP 地址和密码,并自动清理密码中的空格。
你是否也经历过这些场景:
- 管理 200 台服务器,每次部署都要手动输入密码。
- 新同事误操作导致known_hosts文件混乱。
- 密钥泄露后连夜逐台服务器替换。
今天分享一个工业级脚本,3 分钟建立全局SSH信任体系。
一、免密登录的基本原理
在Linux服务器之间实现SSH免密登录,主要依赖公私钥认证 机制:
- 跳板机生成SSH密钥对(私钥&公钥)
- 将公钥(id_rsa.pub)分发到目标服务器的 ~/.ssh/authorized_keys
- 确保权限正确,SSH配置允许公钥认证
- 验证SSH免密登录是否生效。
二、代码实现
1. 读取列表清单
文件中的信息是以“IP 地址:密码”的格式呈现的,同时我们也支持在文件中添加注释以及留空行。以下函数是检查目标文件。
# 输入验证:检查目标文件
validate_input() {
# 检查目标文件是否存在
if [ ! -f "$TARGET_FILE" ]; then
echo "[ERROR] 目标文件不存在: $TARGET_FILE" | tee -a $LOG_FILE
exit 1
fi
# 读取文件并过滤有效IP和密码(支持#注释和空行)
mapfile -t TARGET_ENTRIES < <(grep -vE '^#|^