可直接用ssh-keygen -p为无密码老旧私钥追加高强度口令,不改变密钥数学内容、公钥及认证链;需先验证私钥状态,操作后须测试登录、核对公钥一致性并检查自动化任务兼容性。

直接用 ssh-keygen -p 就能修改已有密钥的密码,也能升级加密方式,整个过程在本地完成,不需要网络或服务器参与。
修改或重设私钥密码
运行命令后,系统会提示输入原密码(若没设过就直接回车),再输入新密码两次确认:
-
ssh-keygen -p -f ~/.ssh/id_rsa—— 修改默认 RSA 私钥的密码 -
ssh-keygen -p -f ~/.ssh/id_ed25519—— 修改 Ed25519 密钥的密码 - 若当前没设密码,执行后即可添加;若已设密码,可换成新密码
升级密钥加密格式(增强安全性)
旧版密钥可能用较弱的加密(如 DES 或无加密),-p 配合 -o 可启用现代加密:
-
ssh-keygen -p -o -f ~/.ssh/id_rsa:转为 OpenSSH 原生格式,使用 bcrypt + AES-256-CBC -
ssh-keygen -p -m PEM -f ~/.ssh/id_rsa:强制保持 PEM 格式,兼容 Java、Python 工具或老旧系统 - 成功后,私钥文件头部会变成
BEGIN ENCRYPTED PRIVATE KEY
验证修改是否生效
改完别急着用,先检查是否真的加了密、格式是否正确:
-
ssh-keygen -l -f ~/.ssh/id_rsa:若提示输入密码,说明加密已启用 -
head -n1 ~/.ssh/id_rsa:查看开头是否为BEGIN OPENSSH PRIVATE KEY(-o 后)或BEGIN RSA PRIVATE KEY(PEM) - 测试连接:
ssh -i ~/.ssh/id_rsa -o IdentitiesOnly=yes user@host -O exit
权限与注意事项
OpenSSH 对私钥权限非常严格,权限不对会导致认证失败:
- 必须执行:
chmod 600 ~/.ssh/id_rsa - 确保
~/.ssh目录权限是700,authorized_keys是600 - 不能用
-p把带密码的密钥“去密码”后再重加——需先留空密码,再重新-p - 切勿对
/etc/ssh/ssh_host_*.key运行-p,否则 sshd 无法启动











