Windows Git bash on Startup 无法找到 agent.env


Windows 10
Git for Windows 64 v2.13.0.windows.1

要使用私钥密码配置SSH,我正在关注此github doc:

https://help.github.com/articles/working-with-ssh-key-passphrases/

特别是,我添加到我的~/.ssh/.bashrc以下脚本:

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

但是,当我启动git bash时,找不到~/.ssh/agent.env

bash: env=~/.ssh/agent.env: No such file or directory
bash: : No such file or directory
bash: : No such file or directory
Could not open a connection to your authentication agent.

什么是agent.env,通常如何安装或应该包含什么?

我知道这是一个旧线程,但也许我可以帮助其他遇到此问题的其他线程。就我而言,我只需要在用户配置文件中创建.ssh文件夹才能使此工作。

我知道这是旧的,但这只是我发生的,这就是我发现的。

对我而言,它最终是文件的编码,包括字节订单标记(BOM(,该标记被解释为第一行的一部分,因此,它不是设置" env"变量,而是认为它正在执行命令(输出中的第一个错误支持此(。

您可以通过将echo "env = $env"添加为第二行来确认,您会看到" env =",表明未设置Env变量。

我使用记事本 创建了.bashrc,并且使用BOM默认为UTF-8。您可以将编码(编码菜单(更改为UTF-8或ANSI,重新保存文件,现在应该按预期工作。

或者,删除文件并将其从bash重新创建:

cd ~/
rm .bashrc
umask 077
touch .bashrc

然后编辑文件并粘贴脚本。

对于最终在这里的其他人试图弄清楚为什么他们的脚本将其添加到~/.profile~/.bashrc时,我发现我需要将其添加到~/.bash_profile中,以便它被Windows上的Git Bash拾取并使用。

不存在文件'〜/.ssh/agent.env',并且脚本未检查它是否存在,并在没有检查时创建它。这意味着您必须在将其分配给Env。

之前创建自己

ssh-add到文件,例如 ssh-add ~/.ssh/id_rsac:/somenondefaultlocation/.ssh/id_rsa

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

另外,请确保为第一行设置相同的目录,例如env=~/.ssh/agent.envenv=c:/somenondefaultlocation/.ssh/agent.env

最新更新