我遇到了这样的错误。
$ git push heroku master
Warning: Permanently added the RSA host key for IP address '50.19.85.132' to the list of known hosts.
! Your key with fingerprint b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65 is not authorized to access bitstarter.
我试着添加键,得到了下面这个错误。
$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
如果你使用Msysgit或Cygwin,你可以在[SSH-Agent in msysgit and cygwin and bash][ant]找到一个好的教程。
1.在你的主文件夹中添加一个名为.bashrc
的文件。
2.2. 打开该文件并粘贴。
<!-- language: lang-bash -->
#!/bin/bash
评价 `ssh-agent -s
ssh-add
3.这假定你的密钥在传统的~/.ssh/id_rsa
位置。如果不是,请在 ssh-add
命令后面加上完整的路径。
4.4. 添加或创建文件~/.ssh/config
,其内容为
ForwardAgent 是
在原来的教程中,ForwardAgent
参数是Yes
,但这是个错字。使用所有的小写字母,否则你会得到错误。
5.重新启动Msysgit。它将要求你输入一次口令,就这样了(直到你结束会话,或者你的ssh-agent被杀死)。
如果你不想每次打开终端都启动一个新的ssh-agent,可以看看Keychain。我现在用的是 Mac,所以我用教程 ssh-agent with zsh & keychain on Mac OS X 来设置它,但我相信谷歌搜索会有很多 Windows 的信息。
更新。在Mac上一个更好的解决方案是将你的钥匙添加到Mac OS的钥匙链中。
ssh-add -K ~/.ssh/id_rsa
就这么简单。
ssh-add和ssh(假设你使用的是openssh实现)需要一个环境变量来知道如何与ssh代理对话。如果你在一个与你现在使用的不同的命令提示符窗口中启动代理,或者你错误地启动了它,无论是ssh-add还是ssh都不会看到那个环境变量的设置(因为环境变量是在它设置的命令提示符中*本地设置的)。
你没有说你使用的是哪个版本的ssh,但如果你使用的是cygwin的,你可以使用[SSH Agent on Cygwin][blog]中的这个配方。
# Add to your Bash config file
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
这将为你打开的每个新的命令提示符窗口自动启动一个代理(如果你在一个会话中打开多个命令提示符,这是不理想的,但至少它应该工作)。
让我提供另一个解决方案。 如果你刚刚安装了Git 1.8.2.2或更高版本,并且你想启用SSH,请按照写得很好的[说明](https://confluence.atlassian.com/display/BITBUCKET/Set+up+SSH+for+Git)。
在步骤5.6中,你可能会遇到一个小小的障碍。 如果一个SSH代理已经在运行,当你重启bash时,你可能会得到以下错误信息
Could not open a connection to your authentication agent
如果是这样,使用下面的命令看看是否有不止一个ssh-agent进程在运行
ps aux | grep ssh
如果你看到不止一个 ssh-agent 服务,你将需要杀死所有这些进程。 使用 kill 命令如下(PID 在你的电脑上是唯一的)。
kill <PID>
例子。
kill 1074
删除所有 ssh-agent 进程后,再次运行 px aux | grep ssh 命令,确定它们已经消失,然后重新启动 Bash。
瞧,你现在应该得到像这样的东西。
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
现在你可以继续进行第5.7步及以后的工作。