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

我想更改私钥的密码。在标准的Unix shell上,我该如何处理?

此外,如何简单地删除密码?只需将其更改为空?

#1 楼

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

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


,然后在提示时提供旧密码和新密码(两次)。 (如果有RSA密钥,请使用~/.ssh/id_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.
[...]


评论


这是从Gentoo Linux上的net-misc / openssh-5.2_p1-r2附带的手册页中获得的。

–迈克·马祖(Mike Mazur)
09年8月6日在6:04

另外,为了将来变得懒惰,我将顺序颠倒了:先快速回答,然后是手册页。

–kch
09年8月6日在6:15

我认为答案很好,因为它既显示了可以更改密码的位置,又显示了在哪里寻找答案。我已经帮助了很多人设置ssh密钥,对于他们来说,实际上记住他们所使用的工具并不总是那么容易。此外,在网上寻找答案是许多人的首选...

– sastorsl
15年5月4日在6:26

如果您的计算机使用OpenSSH> = 6.5,则应使用-o选项启用新的私钥格式(默认情况下为KDF加密)。对于较旧的OpenSSH版本,请使用PKCS#8获得更安全的私钥文件。

– Quinn Comendant
15年8月5日在18:14

@FranciscoLuz我的答案中的命令特定于DSA密钥。如果您具有RSA密钥,则您的命令是正确的。我在答案中添加了一个说明文字以解决此问题。

–迈克·马祖(Mike Mazur)
15年8月27日在15:02



#2 楼

如果没有安装ssh-keygen,也可以直接使用openssl
key="/path/to/your.key"
algo="-des3" # or -aes256 or ...

openssl rsa $algo -in "$key" -out "$key.new"

# and replace old key with new one
mv "$key.new" "$key"


#3 楼

删除您的SSH公钥/私钥:

rm ~/.ssh/id_rsa*


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

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


将新创建的私钥添加到OS X钥匙串中以存储密码并管理自动对其进行解锁:

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来简化此过程。

评论


张贴者询问如何更改密钥上的密码短语,而不是丢弃它并生成新的密码。他们从未提到过OSX。

–musicinmybrain
18年8月13日在12:17

如果不是因为以下三个问题,我会赞成这个答案:1.删除旧密钥不是一个好的开始,因为在更新authorized_keys时将需要这些密钥。 2.您没有提到为什么创建新密钥比更改旧密钥更好。 3.您对操作系统进行假设,但该问题不支持该假设。

–卡巴斯德
18-10-18在19:53