如何将 ppk 转换为使用密码加密的 openSSH 私钥

如何将 ppk 转换为使用密码加密的 openSSH 私钥

当我在 PuttyGen 中导出私钥时,我假设我设置的密码也用于 openSSH 版本。我发现我输入的密码不起作用。使用密码以 openSSH 格式导出私钥的正确方法是什么?

要将导出的 ssh 密钥传输到 linux,我只需将其粘贴到 nano 中,然后尝试通过 ssh 添加它。它提示我输入密码,但不接受我提供的密码。不过,PuttyGen 可以用该密码成功导入它。

答案1

Windows PuTTYgen 的“导出 OpenSSH 密钥”使用 3DES-CBC 加密密钥。如果密码非空,则输出文件显示以下内容:

-----开始 RSA 私钥-----
Proc-Type:4,已加密
DEK 信息:DES-EDE3-CBC,157A04D5AE43F45B

NiGUXnTOhATzg4dGvyXs8rzetF7KpplJJIKrZvQunXuVcZhVS+NTpnTgwJb+zOCm
...

过去 4 年,我测试过各种版本。如果密码为空,我甚至会收到“你确定吗?”提示。

Linuxputtygen在转换时也总是使用相同的密码。


对于 RSA 和 DSA 密钥,OpenSSH 使用与 OpenSSL 相同的“原始”密钥格式。因此,如果 3DES-CBC 不够用,您可以使用openssl命令行工具来重新加密它们:

openssl rsa -aes-128-cbc < old.key > new.key

在 Unix 上当然 OpenSSH 本身的ssh-keygen更好:

ssh-keygen -p -f old.key

相关内容