最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SSH 密钥自动分发脚本如何写
时间:2026-08-08 10:15:49 编辑:袖梨 来源:一聚教程网
SSH密钥自动分发脚本的核心是用ssh-copy-id将本地公钥追加至目标机~/.ssh/authorized_keys并设权限为600;推荐配合循环批量执行,如while read host; do ssh-copy-id -i ~/.ssh/id_rsa.pub "$host"; done < hosts.txt。
SSH 密钥自动分发脚本的核心是用 ssh-copy-id 或手动推送公钥到目标主机的 ~/.ssh/authorized_keys,并确保权限正确。关键不是“写一个万能脚本”,而是根据实际环境(单台/多台、有无密码、是否启用 agent)选择合适方式,避免硬编码敏感信息。
基础版:单台主机一键分发
适用于已知目标 IP 和用户名,且本地有可用私钥、目标支持密码登录的场景:
- 先生成密钥对(如尚无):
ssh-keygen -t ed25519 -C "[email protected]" - 用
ssh-copy-id自动完成授权(最稳妥):ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected] - 验证是否生效:
ssh -i ~/.ssh/id_ed25519 [email protected]
批量分发:用循环处理多台主机
把目标主机列表存成文件(如 hosts.txt,每行格式:user@ip),再配合 ssh-copy-id 批量执行:
#!/bin/bashKEY_FILE="${HOME}/.ssh/id_ed25519.pub"HOSTS_FILE="hosts.txt"while IFS= read -r host; do[ -z "$host" ] && continueecho "正在向 $host 分发密钥..."ssh-copy-id -i "$KEY_FILE" "$host" || echo "⚠️$host 分发失败"done < "$HOSTS_FILE"
注意:需提前配置好 SSH 密码登录或使用 ssh-agent 管理密码,否则会卡在交互式密码输入。
免密码前提:启用 ssh-agent 并加载密钥
批量操作时频繁输密码体验差,建议启动 agent 并添加私钥:
- 启动 agent:
eval "$(ssh-agent -s)" - 添加密钥:
ssh-add ~/.ssh/id_ed25519(会提示输入一次私钥密码) - 之后所有
ssh和ssh-copy-id调用都复用该凭据,无需重复输入
安全与权限要点
自动分发后务必检查目标端权限,否则 SSH 会拒绝读取密钥文件:
-
~/.ssh目录权限必须是700(chmod 700 ~/.ssh) -
~/.ssh/authorized_keys权限必须是600(chmod 600 ~/.ssh/authorized_keys) - 脚本中避免明文写密码;若必须用密码登录批量主机,推荐配合
sshpass(不推荐生产环境)或改用基于密钥的跳转登录
不复杂但容易忽略细节。优先用 ssh-copy-id,它内置了权限校验和追加逻辑,比手动 cat ... | ssh ... 'tee ...' 更可靠。
相关文章
- 一部「黑」奥特曼的电影,被OpenAI金主连夜雪藏 08-12
- 迅捷 FW351R 无线路由器上网时间控制 08-12
- jm天堂漫画官网入口 08-12
- Moonlit Celestial Palace Gate 08-12
- Memcached gets 命令 08-12
- 迅捷 FW351R 无线路由器网速限制设置 08-12