我遇到了以下错误:

$ 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.

当前回答

当我试图让它在Windows上运行以通过SSH连接到存储库时,我也遇到了类似的问题。

这是对我有效的解决方案。

原来我在我的Windows盒子上运行Pageant ssh代理-我会检查你在运行什么。我怀疑它是Pageant,因为它是PuTTY和WinSCP的默认值。ssh add不能在命令行中使用这种类型的代理您需要通过Pageant UI窗口添加私钥,双击任务栏中的Pageant图标(启动后)即可获得该窗口。在将密钥添加到Pageant之前,需要将其转换为PPK格式。此处提供了完整的说明如何将SSH密钥转换为ppk格式就是这样。一旦我将密钥上传到存储库,我就可以使用Sourcetree创建本地存储库并克隆远程。

其他回答

尝试执行以下步骤:

打开GitBash并运行:cd~/.ssh尝试运行agent:eval$(ssh代理)现在,您可以运行以下命令:ssh-add-l

在Windows 10中,我尝试了这里列出的所有答案,但似乎没有一个有效。事实上,他们给出了一个线索。要解决问题,只需要三个命令。这个问题的想法是ssh add需要使用当前ssh代理SOCK文件路径和PID号设置ssh_AUTH_SOCK和ssh_AGENT_PID环境变量。

ssh-agent -s > temp.txt

这将把ssh代理的输出保存在一个文件中。文本文件内容如下:

SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;

从文本文件中复制类似“/tmp/ssh-kjmxRb2764/agent.2764”的内容,并直接在控制台中运行以下命令:

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764

从文本文件中复制类似“3044”的内容,并直接在控制台中运行以下命令:

set SSH_AGENT_PID=3044

现在,当为当前控制台会话设置了环境变量(SSH_AUTH_SOCK和SSH_AGENT_PID)时,运行SSH add命令,连接到SSH代理不会再次失败。

阅读用户456814的答案以获得解释。这里我只尝试自动修复。

如果您在Bash中使用Cygwin终端,请将以下内容添加到$HOME/.bashrc文件中。这只会在第一个Bash终端中启动一次ssh代理,并将密钥添加到ssh代理。(我不确定Linux上是否需要这样做。)

###########################
# start ssh-agent for
# ssh authentication with github.com
###########################
SSH_AUTH_SOCK_FILE=/tmp/SSH_AUTH_SOCK.sh
if [ ! -e $SSH_AUTH_SOCK_FILE ]; then
    # need to find SSH_AUTH_SOCK again.
    # restarting is an easy option
    pkill ssh-agent
fi
# check if already running
SSH_AGENT_PID=`pgrep ssh-agent`
if [ "x$SSH_AGENT_PID" == "x" ]; then
#   echo "not running. starting"
    eval $(ssh-agent -s) > /dev/null
    rm -f $SSH_AUTH_SOCK_FILE
    echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" > $SSH_AUTH_SOCK_FILE
    ssh-add $HOME/.ssh/github.com_id_rsa 2>&1 > /dev/null
#else
#   echo "already running"
fi
source $SSH_AUTH_SOCK_FILE

不要忘记在“ssh-add”命令中添加正确的密钥。

以下命令对我有效。我使用的是CentOS。

exec ssh-agent bash

当我试图让它在Windows上运行以通过SSH连接到存储库时,我也遇到了类似的问题。

这是对我有效的解决方案。

原来我在我的Windows盒子上运行Pageant ssh代理-我会检查你在运行什么。我怀疑它是Pageant,因为它是PuTTY和WinSCP的默认值。ssh add不能在命令行中使用这种类型的代理您需要通过Pageant UI窗口添加私钥,双击任务栏中的Pageant图标(启动后)即可获得该窗口。在将密钥添加到Pageant之前,需要将其转换为PPK格式。此处提供了完整的说明如何将SSH密钥转换为ppk格式就是这样。一旦我将密钥上传到存储库,我就可以使用Sourcetree创建本地存储库并克隆远程。