如何删除SSH密钥的密码而无需创建新密钥?

当我在笔记本电脑上创建一个新的SSH密钥时,我设置了一个密码。但是,正如我现在意识到的,当你试图在一小时内多次提交(gitSVN)到一个远程位置SSH时,这是非常痛苦的。

我能想到的一种方法是,删除我的SSH密钥并创建新的。有没有一种方法可以删除密码,同时仍然保留相同的密钥?

615074 次浏览

简短的回答:

$ ssh-keygen -p

然后,这将提示您输入密钥文件位置、旧密码短语和新密码短语(可以留空以没有密码短语)。


如果您想在没有提示的情况下在一行中完成所有操作,请执行:

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

重要提示:请注意,在执行命令时,它们通常会以纯文本形式记录在您的~/.bash_history文件(或类似文件)中,包括提供的所有参数(即本例中的密码)。因此,建议您使用第一个选项,除非您有特定的理由不这样做。

请注意,您仍然可以使用-f keyfile而无需指定-P-N,并且密钥文件默认为~/.ssh/id_rsa,因此在许多情况下,甚至不需要它。

您可能需要考虑使用ssh-agent,它可以暂时缓存密码。最新版本的gpg-agent还支持ssh-agent使用的协议。

您可能希望将以下内容添加到您的.bash_profile(或等效)中,它在登录时启动ssh-agent。

if [ -f ~/.agent.env ] ; then. ~/.agent.env > /dev/nullif ! kill -0 $SSH_AGENT_PID > /dev/null 2>&1; thenecho "Stale agent file found. Spawning new agent… "eval `ssh-agent | tee ~/.agent.env`ssh-addfielseecho "Starting ssh-agent"eval `ssh-agent | tee ~/.agent.env`ssh-addfi

在某些Linux发行版(Ubuntu,Debian)上,您可以使用:

ssh-copy-id -i ~/.ssh/id_dsa.pub username@host

这会将生成的id复制到远程机器并将其添加到远程钥匙串。

您可以阅读更多这里这里

$ ssh-keygen -p为我工作

打开了git bash。粘贴:$ ssh-keygen -p

输入默认位置。

输入旧密码

输入新的密码-空白

确认新密码-空白

BOOM输入git推送密码的痛苦消失了。

谢谢!

mac上,您可以在钥匙串中存储您的私有ssh密钥的密码,这使得它的使用变得透明。如果您登录,它是可用的,当您注销时,您的root用户无法使用它。删除密码是个坏主意,因为任何拥有该文件的人都可以使用它。

ssh-keygen -K

添加到~/.ssh/config

UseKeychain yes

在windows上,您可以使用PuttyGen加载私钥文件,删除密码,然后覆盖现有的私钥文件。

要更改或删除密码,我经常发现最简单的方法是只传入pf标志,然后让系统提示我提供密码:

ssh-keygen -p -f <name-of-private-key>

例如:

ssh-keygen -p -f id_rsa

如果要删除密码,请输入空密码。

删除或更改密码的示例运行如下所示:

ssh-keygen -p -f id_rsaEnter old passphrase:Key has comment 'bcuser@pl1909'Enter new passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved with the new passphrase.

当向没有密码的键添加密码时,运行看起来像这样:

ssh-keygen -p -f id_rsaKey has comment 'charlie@elf-path'Enter new passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved with the new passphrase.

在我的窗口,它一直在说id_ed25135:没有这样的文件或目录在输入上述命令时。所以我去了文件夹,复制文件夹资源管理器中的路径,并在末尾添加id_ed25135。

这就是我最终打字和工作的内容:
ssh-keygen-p-f C:\用户\John\. ssh\id_ed25135

这奏效了。因为出于某种原因,在Cmder中,默认路径类似于C:\用户\capit/. ssh/id_ed25135(有些是反斜杠:"\",有些是正斜杠:"/")