使用 ssh-keygen -t rsa -b 4096 可生成带 passphrase 的高强度 rsa 4096 密钥,兼顾兼容性与安全性;需设强 passphrase、严格限制私钥权限(chmod 600)、上传公钥至服务器并启用 pubkeyauthentication。

直接用 ssh-keygen -t rsa -b 4096 并在提示时输入 passphrase,就能生成带密码保护的高强度密钥。关键不在“能不能”,而在怎么选得稳、设得牢、管得住。
选对算法和长度,安全基础才扎实
RSA 4096 是当前兼容性与强度兼顾的稳妥选择——比默认 2048 位显著提升抗暴力破解能力。虽然 Ed25519 更高效安全,但若需对接老旧系统(如某些嵌入式设备或旧版 SSH 服务),RSA 4096 仍是首选。
- 执行命令:
ssh-keygen -t rsa -b 4096 -C "admin@prod-server" -
-C后加简短注释(如邮箱或用途),方便后续识别多组密钥 - 私钥默认存为
~/.ssh/id_rsa,公钥为~/.ssh/id_rsa.pub;可用-f自定义路径
Passphrase 要设得安全又实用
Passphrase 不是登录密码,而是本地加密私钥的口令。它不参与网络传输,只在你使用私钥时解密文件本身——即使私钥被窃,没有 passphrase 也无法使用。
- 避免字典词、生日、连续数字或常见短语
- 推荐 4–5 个不相关单词组合(例如
cloud-banana-tunnel-waffle),易记难猜 - 用于自动化脚本(如 cron 或 CI/CD)时,应另配无 passphrase 的专用密钥,并严格限制其权限和用途
- 输错两次会提示
Passphrases do not match. Try again,注意大小写和空格
生成后必须立刻加固权限
OpenSSH 对私钥文件权限极其敏感。若 id_rsa 权限过宽(如 644),会直接报错 UNPROTECTED PRIVATE KEY FILE! 并拒绝使用。
- 运行:
chmod 600 ~/.ssh/id_rsa - 同时确保
~/.ssh目录权限为 700:chmod 700 ~/.ssh - 公钥文件(
id_rsa.pub)权限设为 644 即可,无需写权限
配套动作:上传公钥并启用认证
光有本地密钥没用,服务器必须认得你的公钥。
- 推荐一键上传:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@host(自动创建目录、追加公钥、设权限) - 若无法使用
ssh-copy-id,可手动操作:scp ~/.ssh/id_rsa.pub user@host:~/→ 登录后执行:mkdir -p ~/.ssh && cat ~/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys - 确认服务器端
/etc/ssh/sshd_config中已启用:PubkeyAuthentication yes,并重启sshd










