使用 ssh-keygen -t rsa -b 4096 可生成带 passphrase 的 RSA 密钥对,推荐 4096 位以增强安全性;passphrase 用于本地加密私钥,应选用 4–5 个不相关单词组合;生成后须执行 chmod 600 ~/.ssh/id_rsa 和 chmod 700 ~/.ssh;最后用 ssh-copy-id 或手动方式将公钥部署至服务器并确保 sshd 配置启用公钥认证。

直接用 ssh-keygen -t rsa -b 4096 并在提示时输入 passphrase,就能生成带密码保护的 RSA 密钥对。关键不在“能不能”,而在于怎么设得安全又实用。
选对算法和长度,基础就稳了
RSA 仍是广泛兼容的选择,但建议至少用 -b 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 个不相关单词组合(如
stork-bolt-syrup-oven),易记难猜 - 如果用于自动化脚本(如 cron 或 CI/CD),passphrase 会卡住非交互流程,这时应另配无 passphrase 的专用密钥,并严格限制其权限和用途
- 输错两次会提示
Passphrases do not match. Try again,注意大小写和空格
生成后必须立刻加固权限
SSH 对私钥文件权限极其敏感。如果 id_rsa 权限太宽松(比如被设成 644),OpenSSH 会直接拒绝使用,报错 “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(如目标系统禁用 password 登录),可手动: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和AuthorizedKeysFile .ssh/authorized_keys,改完记得systemctl restart sshd


















