Git Bash:无法打开与身份验证代理的连接

时间:2014-06-11 04:44:36

标签: git github

我是Github的新手并且生成SSH密钥看起来是必要的。我的老板告诉我这件事,所以我需要遵守。

我成功创建了SSH密钥,但是当我要将其添加到ssh-agent时

这就是发生的事情

什么似乎是问题?

enter image description here

8 个答案:

答案 0 :(得分:139)

在使用之前,您似乎需要运行ssh-agent

eval `ssh-agent -s`

本主题回答了这个问题:Could not open a connection to your authentication agent

答案 1 :(得分:38)

我检查了这篇文章的所有解决方案以及@kenorb上面提到的帖子,我找不到任何对我有用的解决方案。

我在Windows 7上使用Git 1.9.5 Preview,配置如下: - 从Windows命令提示符运行Git - 结帐Windows风格,提交Unix风格的行结尾

我使用了' Git Bash '控制一切......并且一切顺利,直到我尝试安装SSH密钥。 GitHub的文档说要做以下(在你阅读完毕后不要运行这些命令)

  

确保已启用ssh-agent:

     如果您使用的是Git Bash,请启用ssh-agent:
window.myFunction()
     如果您正在使用其他终端提示符,例如msysgit,请启用ssh-agent:
# start the ssh-agent in the background
ssh-agent -s
# Agent pid 59566

现在我当然错过了你应该做其中一个事实的事实。因此,我多次运行这些命令,因为后来的# start the ssh-agent in the background eval $(ssh-agent -s) # Agent pid 59566 命令失败了,所以我回到了这一步,并继续一遍又一遍地重试。

这会产生1个Windows' ssh-agent'每次运行这些命令时都会创建进程(每次输入这些命令时都要注意新的PID?)

所以,ssh-add + Ctrl + Alt并点击Del以停止每个' ssh-agent.exe &# 39;过程

既然已经清理了失败尝试中所有搞砸的东西,我会告诉你如何让它工作......

在' Git Bash ':

启动' ssh-agent.exe '过程

End Process

并安装SSH密钥

eval $(ssh-agent -s)

*使用您的用户名调整上面的路径,并确保* / .ssh 目录的位置位于正确的位置。我想你在Git安装期间选择这个位置?也许不是......

在我弄清楚这一点之前,我做错的部分是我没有在' ssh-add '周围使用引号。地点。以上是它在Windows上的输入方式。

答案 2 :(得分:20)

在Windows上,您可以使用以下命令之一运行

对于32位:

  

“C:\ Program Files(x86)\ Git \ cmd \ start-ssh-agent.cmd”

For-64 Bit:

  

“C:\ Program Files \ Git \ cmd \ start-ssh-agent.cmd”

答案 3 :(得分:6)

情况:MVS2017应用-在Windows 10上使用“ Git Bash”-尝试连接到BitBucket存储库。

为清楚起见,当您安装Windows版Git(https://git-scm.com/download/win)时,它带有一个名为Git Bash的实用程序。

enter image description here

因此,我处于“ Git Bash”中,如下所示:

Mike@DUBLIN MINGW64 ~/source/repos/DoubleIrish (master)
$ git remote add origin git@bitbucket.org:Guiness/DoubleIrish.git
$ git remote -v
origin  git@bitbucket.org:Guiness/DoubleIrish.git (fetch)
origin  git@bitbucket.org:Guiness/DoubleIrish.git (push)
Mike@DUBLIN MINGW64 ~/source/repos/DoubleIrish (master)
$ git push -u origin master
[...]
git@bitbucket.org: Permission denied (publickey).
fatal: Could not read from remote repository.

是否设置了私钥?

$ ssh -V
OpenSSH_7.7p1, OpenSSL 1.0.2p  14 Aug 2018
$ ls -a ~/.ssh
./  ../  known_hosts

我可以看到,此时我的私钥文件id_rsa)丢失了。所以我添加了它: (请注意:生成一对私钥-公钥超出了我的答复范围,但是 我可以说在Linux中,您可以使用ssh-keygen。)

$ ls -a ~/.ssh
./  ../  id_rsa  known_hosts

好的,让我们继续:

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-KhQwFLAgWGYC/agent.18320; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17996; export SSH_AGENT_PID;
echo Agent pid 17996;

$ ssh-add ~/.ssh/id_rsa
Could not open a connection to your authentication agent.

要解决此问题,我运行:

$ ssh-agent bash

然后再次:

$ ssh-add ~/.ssh/id_rsa
Identity added: /c/Users/Mike.CORP/.ssh/id_rsa (/c/Users/Mike.CORP/.ssh/id_rsa)

对我有用。希望这会有所帮助

答案 4 :(得分:2)

我也在努力解决这个问题。

输入后 $ eval' ssh-agent -s' 其次是 $ ssh-add~ / .ssh / id_rsa

我得到了同样的抱怨:"无法打开与身份验证代理的连接"。然后我意识到我的电脑键盘上有两种不同的引用。所以我尝试了与#34;〜"相同的位置: $ eval ssh-agent -s $ ssh-add~ / .ssh / id_rsa

并且它起作用了。

答案 5 :(得分:1)

我想改善接受的答案

black.bashrc一起使用的缺点:

  1. 每个git-bash都有自己的ssh-agent.exe进程
  2. 每次打开git-bash时,都应手动添加SSH密钥

这是我的eval ssh-agent -s,将消除弊端

将此.bashrc放入您的主目录(Windows 10:.bashrc),并且每次打开新的git-bash都会执行该命令 并且C:\Users\[username]\.bashrc将作为头等公民

阅读#comments以了解其工作原理

ssh-add

此脚本还使用了一些技巧,通过将它们保存到# Env vars used # SSH_AUTH_SOCK - ssh-agent socket, should be set for ssh-add or git to be able to connect # SSH_AGENT_PID - ssh-agent process id, should be set in order to check that it is running # SSH_AGENT_ENV - env file path to share variable between instances of git-bash SSH_AGENT_ENV=~/ssh-agent.env # import env file and supress error message if it does not exist . $SSH_AGENT_ENV 2> /dev/null # if we know that ssh-agent was launched before ($SSH_AGENT_PID is set) and process with that pid is running if [ -n "$SSH_AGENT_PID" ] && ps -p $SSH_AGENT_PID > /dev/null then # we don't need to do anything, ssh-add and git will properly connect since we've imported env variables required echo "Connected to ssh-agent" else # start ssh-agent and save required vars for sharing in $SSH_AGENT_ENV file eval $(ssh-agent) > /dev/null echo export SSH_AUTH_SOCK=\"$SSH_AUTH_SOCK\" > $SSH_AGENT_ENV echo export SSH_AGENT_PID=$SSH_AGENT_PID >> $SSH_AGENT_ENV echo "Started ssh-agent" fi 文件中来确保git-bash实例之间共享提供的环境变量。

答案 6 :(得分:-1)

以上解决方案并不适用于我,原因不明。以下是我成功运作的解决方法。

1)不要使用命令ssh-keygen -t rsa -C"xxx@xx.com"生成新的ssh密钥,您可以删除现有的SSH密钥。

2)但使用Git GUI, - > "帮助" - > "显示ssh键" - > "生成密钥",密钥将自动保存到ssh,不再需要使用ssh-add

答案 7 :(得分:-1)

尝试使用cygwin代替bash。对我有用