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

我在笔记本电脑上建立新的SSH密钥时设置了密码。 可是,正如我如今意识到的那样,当您尝试在一小时内经过SSH屡次提交( GitSVN )远程位置时,这很是痛苦。 git

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


#1楼

简短回答: bash

$ ssh-keygen -p

而后,这将提示您输入密钥文件位置,旧密码短语和新密码短语(能够留空以使其没有密码短语)。 ssh

若是你想在没有提示的状况下在一行上完成全部操做: spa

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

重要提示:请注意,在执行命令时,它们一般会以纯文本形式记录在~/.bash_history文件(或相似文件)中,包括提供的全部参数(即本例中的密码)。 所以,除非您有特殊缘由,不然建议您使用第一个选项。 请注意,您仍然可使用-f keyfile而没必要指定-P-N ,而且密钥文件默认为~/.ssh/id_rsa ,所以在许多状况下甚至不须要它。 code

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


#2楼

您可能但愿将如下内容添加到.bash_profile(或等效文件)中,该文件在登陆时启动ssh-agent。 it

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)上你可使用: io

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

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

你能够在这里这里阅读更多。


#3楼

$ ssh-keygen -p为我工做

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

按Enter键进入默认位置。

输入旧密码

输入新的密码 - BLANK

确认新的密码 - BLANK

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

谢谢!


#4楼

Mac上,您能够在钥匙串中存储私人ssh密钥的密码,这样就能够透明地使用它。 若是您已登陆,则可用,当您注销时,root用户没法使用它。 删除密码短语是一个坏主意,由于拥有该文件的任何人均可以使用它。

ssh-keygen -K

将其添加到~/.ssh/config

UseKeychain yes

#5楼

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

相关文章
相关标签/搜索