快讯资讯
手机优化
系统数码
网络通信人工智能
网站游戏
测评专题

  服务器多?密码烦?用这       警惕!数据中心过剩危机    

服务器多?密码烦?用这个脚本,一键搞定 SSH

时间:2026-09-17 09:19 来源:未知 人气:

你是否也经历过这些场景:

  • 管理 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 '^#|^$' "$TARGET_FILE") # 检查是否读取到有效条目 if [ ${#TARGET_ENTRIES[@]} -eq 0 ]; then echo "[ERROR] 目标文件中未找到有效IP和密码" | tee -a $LOG_FILE exit 1 fi echo "[$(date +%F%T)] 已加载目标IP和密码列表:" | tee -a $LOG_FILE printf '%s\n' "${TARGET_ENTRIES[@]}" | tee -a $LOG_FILE }

2. 生成密钥

以下函数是在.ssh生成一个秘钥对。

# 生成跳板机密钥 generate_key() { echo "[$(date +%F%T)] 正在生成跳板机密钥..." | tee -a $LOG_FILE if [ ! -f ~/.ssh/id_${KEY_TYPE} ]; then ssh-keygen -t ${KEY_TYPE} -N "" -f ~/.ssh/id_${KEY_TYPE} -q [ $? -eq 0 ] echo "密钥生成成功" || exit 1 fi }

3. 部署公钥文件

秘钥对生成后,通过以下函数部署公钥。

# 批量部署公钥到目标节点 deploy_key() { local ip=$1 local password=$2 echo "[$(date +%F%T)] 正在处理节点 $ip" | tee -a $LOG_FILE for ((i=1; i=$RETRY_TIMES; i++)); do SSHPASS="$password" sshpass -e ssh-copy-id \ -o StrictHostKeyChecking=no \ -o ConnectTimeout=10 \ -i ~/.ssh/id_${KEY_TYPE}.pub \ $USER@$ip /dev/null 21 if [ $? -eq 0 ]; then echo "节点 $ip 公钥部署成功" | tee -a $LOG_FILE return 0 else echo "节点 $ip 第$i次尝试失败,等待重试..." | tee -a $LOG_FILE sleep $((i*2)) fi done echo "[ERROR] 节点 $ip 公钥部署失败!" | tee -a $LOG_FILE return 1 }

本文标签:

更多文章

相关文章

网站导航 | 快讯 | 资讯 | 手机 | 优化 | 系统 | 数码 | 网络通信 | 人工智能

  • 游戏

    合作伙伴:

  • 友情链接(欢迎业界知名网站交换链接)申请友情

    

    声明:本站资源皆来自网络,如有侵权问题,请联系管理员处理!

    Copyright ©2020-2028快知站 版权所有 All rights reserved.

    闽ICP备20010713号-1 闽公网安备 35020602001684号