ssh - 无法打开你的身份验证代理间的连接

  显示原文与译文双语对照的内容

我正遇到以下错误:


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

时间:

你是否启动 ssh-agent

你可能需要开始在 ssh-addssh-agent,然后再运行命令:


eval `ssh-agent -s`
ssh-add

在 Windows, 的注意,这将启动代理 msysgit bash. 如果你使用的是不同的shell或者操作系统,你可能需要使用命令的变体,如在中列出的其他命令。

请查看以下答案:

  1. ssh-add抱怨:无法打开与身份验证代理程序的连接
  2. git push 需要用户名和密码 ( 包含有关如何使用ssh-agent的详细说明)
  3. 如何运行( git/ssh ) 身份验证代理程序? 。
  4. 无法打开与你的身份验证代理程序的连接

为什么我们需要使用 eval 而不仅仅是 ssh-agent

若要了解原因,请参见 绿色的答案。

公共 vs 私钥

同时,每当我使用 ssh-add 时,我总是将私钥添加到它。 文件 ~/.ssh/id_rsa.pub 看起来像一个公钥,我不确定它是否能工作。 你有 ~/.ssh/id_rsa 文件? 如果你在文本编辑器中打开它,它是否表示它是一个私钥?

我尝试了其他的解决方案,但没有用。 我做了更多的研究,发现下面的命令。 我正在使用 Windows 7和 Git Bash

 
eval $(ssh-agent)

 

更多信息:https://coderwall.com rdi_wq web

InlineShape或者 Cygwin

看起来好像并不是很在Msysgit和和 bash, 看起来好像并不是很如果你使用的是Msysgit或者处就能找到合适的教程

  1. 将名为 .bashrc的文件添加到你的主文件夹中。

  2. 打开文件并粘贴:

    
    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
    
  3. 这假设你的密钥在常规的~/.ssh/id_rsa 位置。 如果不是,在 ssh-add 命令之后包含完整路径。

  4. 使用内容添加或者创建文件 ~/.ssh/config

     
    ForwardAgent yes
    
     

    在原始教程中,ForwardAgent 参数是 Yes,但它是一个错误。 使用全部小写或者你将得到错误。

  5. 重新启动 t2zos 。它会要求你输入密码一次,这样就可以结束会话,或者你的ssh-agent被杀死。

mac/OS X

如果你不想每次打开终端时都启动新的ssh-agent,请查看钥匙串列表。 于现在我是在Mac上,所以我使用了相关教程 Mac OS X 上使用 zsh & ssh-agent钥匙串 info.在谷歌上搜索要设置这里功能,但我相信会有足够多

更新: 在Mac上更好的解决方案是将你的密钥添加到Mac操作系统钥匙串:


ssh-add -K ~/.ssh/id_rsa

很简单。

请尝试以下步骤:

1 ) 打开 Git Bash并运行: cd ~/.ssh

2 ) 尝试运行代理: eval $(ssh-agent)

3 ) 现在,你可以运行以下命令: ssh-add -l

我在Linux中遇到了同样的问题,这就是我所做的:

基本上,命令ssh-agent启动代理,但它并没有真正设置 环境变量 来运行。 它只是将这些变量输出到 shell 。

你需要:

 
eval `ssh-agent`

 

然后执行 ssh-add 。请参见 无法打开与认证代理的连接。

ssh-add和 ssh ( 假设你正在使用openssh实现) 需要一个环境变量来知道如何与ssh代理交谈。 如果在当前使用的命令提示窗口中启动了代理,或者你不正确地启动了它,那么ssh-add和ssh都不会看到环境变量设置为( 由于环境变量被设置为本地,它被设置为) 。

看起来好像并不是很上, 你不说你正在使用哪个版本的SSH看起来好像并不是很的,但是如果你使用,你可以使用这个配方从 SSH agent:


# 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

这将为你打开的每个新命令提示符窗口自动启动代理。

放大n3o为 Windows 7的答案。。

我的问题的确,有些需要 环境变量 未被设置,并且这些 环境变量 ssh-agent n3o是正确的,告诉你如何设置,但实际上并没有对它的进行设置。

因为 Windows 不允许你在这里执行"评估,",所以要做的是:

将ssh-agent的输出重定向到一个批处理文件


ssh-agent> temp.bat

现在使用文本编辑器如记事本来编辑前两行的temp.bat.: - 在行首插入单词"集合集"和空格。 - 删除第一个分号和后面的所有内容。

现在删除第三行。 你的temp.bat 应该类似于:


set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608

于ssh-add相关设置运行 temp.bat. work,这会设置 环境变量 那些 needed.

我刚得到这个工作。 打开你的~/.ssh/config 文件。

附加以下内容-


Host github.com
 IdentityFile ~/.ssh/github_rsa

为我提供提示的页面为 Git 设置SSH表示单个空间缩进很重要。。 虽然我在中有一个配置,但它没有那个空间并且工作正常。

...