题 如何更改我的私钥密码?


我有一个现有的公钥/私钥对。私钥受密码保护,加密可以是RSA或DSA。这些键是您生成的类型 ssh-keygen 并且通常存储在 ~/.ssh

我想更改私钥的密码。我如何在标准的Unix shell上进行操作?

另外,我该如何删除密码?只需将其更改为空?


219
2017-08-06 05:37






答案:


要更改默认DSA密钥上的密码,请执行以下操作:

$ ssh-keygen -p -f ~/.ssh/id_dsa

然后在提示时提供您的新旧密码(两次)。 (使用 ~/.ssh/id_rsa 如果你有一个RSA密钥。)

来自的更多细节 man ssh-keygen

[...]
SYNOPSIS
    ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment]
               [-f output_keyfile]
    ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
[...]
     -f filename
             Specifies the filename of the key file.
[...]
     -N new_passphrase
             Provides the new passphrase.

     -P passphrase
             Provides the (old) passphrase.

     -p      Requests changing the passphrase of a private key file instead of
             creating a new private key.  The program will prompt for the file
             containing the private key, for the old passphrase, and twice for
             the new passphrase.
[...]

284
2017-08-06 06:01



这是来自gentoo Linux上net-misc / openssh-5.2_p1-r2的手册页。 - Mike Mazur
另外,为了将来懒惰的人,我会颠倒顺序:快速回答第一个,手册页以后。 - kch
我认为答案很好,因为它既显示了您可以更改密码的位置,也显示了在哪里查找答案。我帮助了很多人设置ssh密钥,而实际上他们记住他们使用的工具并不容易。此外,在网上寻找答案是许多人的第一选择...... - sastorsl
如果您的机器使用OpenSSH> = 6.5, 你应该使用 -o 选项 启用新的私钥格式(默认情况下,bcrypt为KDF)。使用较旧的OpenSSH版本, 使用PKCS#8获取更安全的私钥文件。 - Quinn Comendant
@FranciscoLuz我的回答中的命令特定于DSA密钥。如果您有RSA密钥,那么您的命令是正确的。为解决这个问题,我添加了一个模糊的答案。 - Mike Mazur


删除SSH公钥/私钥:

rm ~/.ssh/id_rsa*

重新创建密钥对,选择一个新的密码:

ssh-keygen -t rsa -f ~/.ssh/id_rsa

将新创建的私钥添加到OS X Keychain以存储密码并管理自动解锁:

ssh-add -K ~/.ssh/id_rsa

将公钥复制到OS X剪贴板,以添加到GitHub等Web服务。

cat ~/.ssh/id_rsa.pub | pbcopy

将新创建的公钥添加到 ~/.ssh/authorized_keys 远程服务器的文件。务必确保两个遥控器的正确权限 ~/.ssh 文件夹(700)和 ~/.ssh/authorized_keys (600)。您可能想要调查使用 ssh-copy-id 缓解这个过程。


-7
2018-02-20 15:17



海报询问如何更改密钥上的密码,而不是将其丢弃并生成一个新密码;他们从未提及OS X. - musicinmybrain
如果不是这三个问题,我会赞成这个答案: 1。 删除旧密钥并不是一个好的开始,因为在更新时您需要这些密钥 authorized_keys。 2。 您没有提到为什么创建新密钥比更改旧密码更好。 3。 您对操作系统做出了假设,而问题不支持。 - kasperd