如何在不创建新密钥的情况下删除SSH密钥的密码?

时间:2008-09-21 22:39:03

标签: unix ssh passwords openssh passphrase

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

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

7 个答案:

答案 0 :(得分:1560)

简短回答:

$ ssh-keygen -p

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

如果你想在没有提示的情况下在一行上完成所有操作:

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

重要事项请注意,在执行命令时,它们通常会以纯文本形式记录在~/.bash_history文件(或类似文件)中,包括提供的所有参数(即本例中的密码)。因此,除非您有特殊原因,否则建议您使用第一个选项。请注意,您仍然可以使用-f keyfile而无需指定-P-N,并且密钥文件默认为~/.ssh/id_rsa,因此在许多情况下甚至不需要它。< / p>

您可能需要考虑使用ssh-agent,它可以缓存密码短语一段时间。最新版本的gpg-agent也支持ssh-agent使用的协议。

答案 1 :(得分:33)

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

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

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

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

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

您可以阅读更多herehere

答案 2 :(得分:17)

$ ssh-keygen -p为我工作

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

按Enter键进入默认位置。

输入旧密码

输入新密码 - BLANK

确认新密码 - BLANK

BOOM为git push输入密码的痛苦已经消失。

谢谢!

答案 3 :(得分:3)

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

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

例如:

ssh-keygen -p -f id_rsa

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

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

ssh-keygen -p -f id_rsa
Enter 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_rsa
Key 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.

答案 4 :(得分:1)

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

答案 5 :(得分:0)

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

ssh-keygen -K

将此添加到~/.ssh/config

UseKeychain yes

答案 6 :(得分:0)

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

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

这奏效了。因为出于某种原因,在 Cmder 中,默认路径是这样的 C:\Users\capit/.ssh/id_ed25135(有些是反斜杠:“\”,有些是正斜杠:“/”)