首选ed25519算法生成密钥:ssh-keygen -t ed25519 -c "your_email@example.com";仅兼容老旧系统时用4096位rsa:ssh-keygen -t rsa -b 4096 -c "your_email@example.com"。

现在主流环境推荐优先用 Ed25519,它不是“更强一点”,而是综合表现更优:密钥固定 256 位、签名快、体积小、抗侧信道攻击能力强。RSA 只在必须兼容老旧系统(比如 SSH 6.x 或某些嵌入式设备)时才考虑,且必须用 4096 位——2048 位已不够安全,1024 位则被 OpenSSH 8.8+ 协议层直接拒绝。
生成 Ed25519 密钥对(推荐首选)
执行以下命令:
ssh-keygen -t ed25519 -C "your_email@example.com"
- -t ed25519 表示指定算法,无需加 -b 参数,Ed25519 固定 256 位,加长度会报错
- -C 后面是注释,建议填邮箱或标识用途,方便后续管理多个密钥
- 回车接受默认路径 ~/.ssh/id_ed25519,私钥和公钥会成对生成
- 密码短语(passphrase)建议设置,哪怕只是简单口令,也能防止私钥文件被盗后直接滥用
生成高强度 RSA 密钥对(仅限兼容需求)
执行以下命令:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- -b 4096 是硬性要求,低于该长度不满足当前安全基线
- OpenSSH 8.8+ 已弃用 ssh-rsa(SHA-1 签名),但 4096 位 RSA 密钥仍可通过 rsa-sha2-256/512 签名正常工作
- 避免使用 -m PEM 以外的格式,尤其不要用新默认的 OPENSSH 格式去对接老服务端(如部分 CI/CD 工具或旧版 Git 服务器)
- 生成后可检查密钥强度:ssh-keygen -lf ~/.ssh/id_rsa 输出中应显示 “4096 SHA256:…”
生成后必须做的三件事
- 确认权限正确:私钥 chmod 600,~/.ssh 目录 chmod 700,authorized_keys 也是 chmod 600
- 上传公钥前先验证内容:cat ~/.ssh/id_ed25519.pub 应是一行以 ssh-ed25519 开头的字符串
- 若用于生产服务器,记得同步升级服务端 HostKey —— 否则客户端即使有强密钥,也会因服务端签名弱而被警告或断连











