首页/系统/Linux 运维命令速查/ssh-keygen 生成与维护密钥
网络命令82 条

ssh-keygen 生成与维护密钥

生成 SSH 密钥对(推荐 ed25519)、查看指纹、清理 known_hosts 旧记录(-R);密钥认证的基础工具。

Linux 运维命令速查系统更新于 2026-10-13

ssh-keygen 是什么

ssh-keygen 负责 SSH 密钥对的生成与日常维护。它能做的事比名字显示的更多:生成密钥、查看与核对指纹、给私钥加口令、把公钥复制到远端、以及清理 known_hosts 里过期的主机记录。密钥类型上,ed25519 是当前的默认推荐(密钥短、签名快、安全性好),只有在需要兼容较老的设备或系统时才退回 RSA 并指定 4096 位。

基本信息

用途生成密钥对、查看指纹、维护 known_hosts 与 authorized_keys
语法ssh-keygen -t 类型 [-C 备注] [-f 文件名] [-N 口令];-lf 查看公钥指纹;-R 主机 清理旧记录
推荐类型ed25519;兼容老环境用 rsa -b 4096,dsa 已废弃不要再用
权限私钥必须 600、.ssh 目录 700,远程家目录不能对同组可写

典型使用场景

  • 免密登录:为运维人员或自动化账号配置公钥登录,替代口令认证
  • CI 部署密钥:给流水线生成专用密钥对,只允许部署所需的最小权限
  • 主机指纹核对:首次连接前核对服务器指纹,避免中间人风险
  • 重装系统后清记录:主机密钥变化导致连接被拒,用 -R 清掉旧条目
  • 批量分发:把公钥通过 ssh-copy-id 或配置管理工具下发到目标机

生成与维护

生成与维护
ssh-keygen -t ed25519 -C 'ops@ci'                  # 生成密钥对,默认放在 ~/.ssh
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/deploy -N '' # 指定文件名与空口令,加 -a 提高口令派生强度
ssh-keygen -lf ~/.ssh/id_ed25519.pub                # 查看公钥指纹与类型
ssh-keygen -R 10.0.0.5                              # 清掉该主机的旧指纹(重装系统后必做)
ssh-keygen -R 10.0.0.5 -f ~/.ssh/known_hosts        # 指定 known_hosts 文件
ls -l ~/.ssh/id_ed25519                             # 检查私钥权限是否为 600

复制公钥并验证密钥登录

复制公钥并验证密钥登录
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
ssh -o PreferredAuthentications=publickey user@server    # 强制走密钥,确认可用
ssh -v user@server 2>&1 | grep -i 'Offering public key'  # -v 观察认证过程
# 远端权限自查:家目录不可对同组可写,否则 sshd 会拒绝使用该密钥
ssh user@server 'ls -ld ~ ~/.ssh ~/.ssh/authorized_keys'

密钥类型对照

类型特点适用
ed25519密钥短、签名快、默认安全强度高当前首选,现代系统与设备都支持
rsa 4096兼容性最好,密钥与签名都更长对接老设备或老版本 SSH 时使用
ecdsa曾有兼容优势,但曲线选择存在争议只在特定设备要求时使用
dsa已被弃用,多数新版本默认禁用不要在新环境使用
给私钥设置口令能显著提升安全,但会带来非交互场景的麻烦:CI 里通常使用空口令的专用密钥并严格限制权限与来源,人工运维则配合 ssh-agent 缓存口令,兼顾方便与安全。
私钥文件权限必须为 600、.ssh 目录为 700,否则 ssh 会直接拒绝使用。另外,私钥不要放进代码仓库或镜像,一次泄露就等于长期有效的通行证。

易错点

  • 服务器重装后报主机标识已变化就加参数跳过校验:正确做法是用 ssh-keygen -R 清理旧记录,盲目跳过等于放弃中间人防护
  • 私钥权限过宽:ssh 会直接拒绝加载,排查时先看 ls -l 的权限位
  • 远端家目录对同组可写:sshd 的严格模式会忽略 authorized_keys,表现为「密钥明明配了却仍要输密码」
  • 给自动化用的密钥引入口令却没人管:CI 会卡在交互提示上,需要按场景明确用空口令还是接 agent

数据来源与参考

  • man 1 ssh-keygen(OpenSSH 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌