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

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


当前回答

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

ssh-keygen -K

将其添加到~/.ssh/config

UseKeychain yes

其他回答

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

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

这就是我最后键入并工作的内容:ssh keygen-p-f C:\Users\john\.ssh\id_ed25135

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

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

ssh-keygen -K

将其添加到~/.ssh/config

UseKeychain yes

$sh-keygen-p为我工作

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

点击enter键进入默认位置。

输入旧密码

输入新密码-空白

确认新密码-空白

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

谢谢

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

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复制到远程计算机,并将其添加到远程密钥链。

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