如何设置 git bash 重启后我不必为 ssh 输入密码?

Posted

技术标签:

【中文标题】如何设置 git bash 重启后我不必为 ssh 输入密码?【英文标题】:How to setup the git bash that I do not have to type the passpharse for ssh after reboot? 【发布时间】:2022-01-04 23:11:44 【问题描述】:

我已经按照 GitHub 文档为我的笔记本电脑设置了 ssh 密钥。然后我在推或拉时遇到了麻烦,因为我每次都必须写密码。所以,我关注了这个GitHub doc。将以下代码添加到我的 .bash_profile

env=~/.ssh/agent.env

agent_load_env ()  test -f "$env" && . "$env" >| /dev/null ; 

agent_start () 
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; 

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2=agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

现在我每次打开电脑都要写 GitHub 通行证。有什么方法可以让我不必在每次重启时都输入密码?

【问题讨论】:

重新生成一个没有密码的 SSH 密钥...(也就是说,在生成过程中要求它时留空。) @GenoChen 成功了!谢谢 @JoyKarmoker 当然,这将完全绕过您的问题。我已经相应地编辑了答案。 【参考方案1】:

阅读man ssh-add,可以尝试将SSH_ASKPASS设置为described here。 将您的脚本中的ssh-add 替换为:

cat ~/.ssh/id_rsa | SSH_ASKPASS=~/.print_ssh_password ssh-add -

假设您已将私钥密码存储在 %USERPROFILE%\.print_ssh_password 中,这并不理想,但至少在您自己的 Windows 配置文件文件夹中受到保护。

当然,另一种方法是remove the passphrase of your current existing private key(同样不理想)。 那就不用ssh-add了。


另一个明显的选择是在生成您的私钥时首先没有密码。

您也可以删除passphrase to an existing private key。

【讨论】:

以上是关于如何设置 git bash 重启后我不必为 ssh 输入密码?的主要内容,如果未能解决你的问题,请参考以下文章

vscode配置git bash

SSH、shell、Xshell 、bash、Git、Git bash 、Git CMD、Git shell

(git bash) 推送到 bitbucket 忽略 SSH 密钥

在 git-bash 上无法通过 Permission denied (publickey) [重复]

如何在 Windows 10 上的 Git bash 上为标准输入注入 EOF?

在SSH中使用bash脚本时,为Git输入私钥密码