我是Github的新手并且生成SSH密钥看起来是必要的。我的老板告诉我这件事,所以我需要遵守。
我成功创建了SSH密钥,但是当我要将其添加到ssh-agent时
这就是发生的事情
什么似乎是问题?
答案 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:如果您正在使用其他终端提示符,例如msysgit,请启用ssh-agent:window.myFunction()
# 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;过程
既然已经清理了失败尝试中所有搞砸的东西,我会告诉你如何让它工作......
启动' 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的实用程序。
因此,我处于“ 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
一起使用的缺点:
这是我的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。对我有用