协慌网

登录 贡献 社区

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

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

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

答案

简短回答:

$ 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/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 复制到远程计算机并将其添加到远程钥匙串。

你可以在这里这里阅读更多。

$ ssh-keygen -p为我工作

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

按 Enter 键进入默认位置。

输入旧密码

输入新的密码 - BLANK

确认新的密码 - BLANK

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

谢谢!