启动时的Windows git bash无法找到agent.env

时间:2017-06-08 16:15:37

标签: git github ssh git-bash ssh-agent

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

使用私钥密码配置ssh我正在关注此GitHub文档:

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,它通常是如何安装的?它应该包含什么?

3 个答案:

答案 0 :(得分:0)

我知道这是旧的,但这只是发生在我身上,这就是我所发现的。

对我来说,它最终是包含字节顺序标记(BOM)的文件的编码,该文件被解释为第一行的一部分,因此它没有设置“ env”变量,而是认为它正在执行命令(输出中的第一个错误支持此命令)。

您可以通过在第二行添加echo "env = $env"来进行确认,然后会看到“ env =”,表明未设置env变量。

我已经使用notepad ++创建了.bashrc,它默认为带有BOM的utf-8。您可以将编码(编码菜单)更改为utf-8或ANSI,重新保存文件,它现在应该可以正常工作了。

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

cd ~/
rm .bashrc
umask 077
touch .bashrc

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

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