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.
[...]
#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
评论
这是从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