我遇到的这个错误:
$ 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.
Answer 1:
什么时候开始ssh-agent
?
您可能需要启动ssh-agent
在运行前ssh-add
命令:
eval `ssh-agent -s`
ssh-add
请注意,这将开始在Windows msysgit猛砸剂。 如果您使用的是不同的外壳或操作系统,你可能需要使用命令的变体,如在列出的其他答案 。
请参阅以下答案:
- SSH-加抱怨:无法打开您的认证代理的连接
- 混帐推需要用户名和密码 (包含如何使用ssh-agent的详细说明)
- 如何运行(GIT / SSH)认证代理? 。
- 无法打开到您的身份验证代理的连接
要自动启动ssh-agent和允许单个实例在多个控制台窗口的工作,看到在登录时启动的ssh-agent 。
我们为什么需要使用eval
,而不是仅仅ssh-agent
?
为了找出原因,看罗宾·格林的答案 。
公共VS私钥
此外,每当我使用ssh-add
,我总是私钥添加到它。 该文件~/.ssh/id_rsa.pub
看起来像一个公共密钥,我不知道是否会工作。 你有一个~/.ssh/id_rsa
文件? 如果您在文本编辑器打开它,它说这是一个私钥?
Answer 2:
我试过其他的解决方案无济于事。 我做更多的研究,结果发现下面的命令工作。 我使用的是Windows 7和Git的猛砸 。
eval $(ssh-agent)
:在更多信息https://coderwall.com/p/rdi_wq
Answer 3:
下面的命令为我工作。 我使用CentOS的。
exec ssh-agent bash
Answer 4:
MsysGit或Cygwin的
如果您使用Msysgit或Cygwin的你可以找到一个很好的教程SSH代理在msysgit和Cygwin和bash :
添加一个名为.bashrc
到您的个人文件夹。
打开该文件并粘贴到:
#!/bin/bash eval `ssh-agent -s` ssh-add
这是假设你的关键是在传统~/.ssh/id_rsa
位置。 如果不是,包括之后的完整路径ssh-add
命令。
加入或创建文件~/.ssh/config
与内容
ForwardAgent yes
在原来的教程ForwardAgent
参数是Yes
,但它是一个错字。 全部使用小写,否则你会得到错误。
重新启动Msysgit。 它会问你输入一次你的密码,这就是它(直到结束会话,或你的ssh-agent被杀害。)
MAC / OS X
如果你不希望每次打开一个终端时间开始新的ssh-agent,检查钥匙扣 。 我在Mac上了,所以我使用的教程的ssh-agent与zsh的钥匙扣和Mac OS X上设置它,但我敢肯定,谷歌搜索将有大量的信息为Windows。
更新 :在Mac上更好的解决方案是将您的键添加到Mac OS的钥匙扣:
ssh-add -K ~/.ssh/id_rsa
就那么简单。
Answer 5:
无法打开到您的身份验证代理的连接
要解决此错误:
庆典:
$ eval `ssh-agent -s`
tcsh中:
$ eval `ssh-agent -c`
然后使用ssh-add
像平时那样。
热门搜索:
我总是忘了什么键入上述的ssh-agent命令,所以我创造了我的一个别名.bashrc
这样的文件:
alias ssh-agent-cyg='eval `ssh-agent -s`'
现在,而是采用ssh-agent
,我可以使用ssh-agent-cyg
如
$ ssh-agent-cyg
SSH_AUTH_SOCK=/tmp/ssh-n16KsxjuTMiM/agent.32394; export SSH_AUTH_SOCK;
SSH_AGENT_PID=32395; export SSH_AGENT_PID;
echo Agent pid 32395;
$ ssh-add ~/.ssh/my_pk
修复的原始来源:
http://cygwin.com/ml/cygwin/2011-10/msg00313.html
Answer 6:
我面临着同样的问题适用于Linux,这里是我做过什么:
基本上,该命令的ssh-agent启动代理,但它并没有真正设置环境变量来运行它。 它只是输出这些变量的外壳。
你需要:
eval `ssh-agent`
然后做SSH-ADD。 见无法打开您的认证代理的连接 。
Answer 7:
SSH-add和SSH(假设你使用OpenSSH的实现)需要一个环境变量知道如何去跟SSH代理。 如果您在不同的命令提示符窗口中启动代理到一个你现在使用,或者如果错误地启动它,无论是SSH-添加也不ssh将看到环境变量设置(因为环境变量本地设置的命令提示它的设置)。
你不说你正在使用的SSH版本,但是如果你使用Cygwin的,你可以使用这个配方在Cygwin SSH代理 :
# 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
这将自动启动代理为你打开每一个新的命令提示符窗口(如果你在一个会话中打开多个命令提示符这是最理想的,但至少它应该工作)。
Answer 8:
尝试以下步骤:
1)打开GIT中击和运行: cd ~/.ssh
2)尝试运行代理: eval $(ssh-agent)
3)现在,你可以运行下面的命令: ssh-add -l
Answer 9:
而不是使用$ ssh-agent -s
,我用$ eval `ssh-agent -s`
来解决这个问题。
以下是我一步(上GitBash步骤2起)执行步骤:
- 清理我的.ssh夹在
C:\user\<username>\.ssh\
- 产生一个新的SSH密钥
$ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
- 检查是否有任何进程ID(SSH代理)已经在运行。
$ ps aux | grep ssh
- (可选)如果发现任何在步骤3中,杀死那些
$ kill <pids>
- 启动SSH代理
$ eval `ssh-agent -s`
- 在步骤2至SSH剂产生加入ssh密钥
$ ssh-add ~/.ssh/id_rsa
Answer 10:
在Windows 10我想在这里列出的所有答案,但没有人似乎工作。 事实上,他们提供线索。 为了解决一个问题简单,你需要3个命令。 这个问题的想法是,SSH-ADD需要SSH_AUTH_SOCK和SSH_AGENT_PID环境变量与当前的ssh-agent袜子文件的路径和PID号进行设置。
ssh-agent -s > temp.txt
这将保存文件的ssh-agent的输出。 文本文件的内容将是这样的:
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代理。
Answer 11:
我碰到的一件事是, eval
没有为我使用Cygwin,什么工作对我来说是工作ssh-agent ssh-add id_rsa
。
在那之后我碰到的一个问题,我的私钥太开来了,解决我设法找到该(来自这里 ):
chgrp Users id_rsa
以及
chmod 600 id_rsa
最后我能够使用:
ssh-agent ssh-add id_rsa
Answer 12:
要在n3o的回答放大为Windows 7 ...
我的问题是确实是一些必需的环境变量未设置,并n3o是正确的,SSH代理告诉您如何设置这些环境变量,但实际上并没有设置。
由于Windows不会让你做“EVAL,”这里是做什么,而不是:
重定向的ssh-agent的输出与一个批处理文件
ssh-agent > temp.bat
现在,使用文本编辑器如记事本编辑temp.bat。 对于每个前两行: - 将单词“set”和在该行的开头空间。 - 删除第一个分号和后面的一切。
现在删除第三行。 你应该temp.bat看起来是这样的:
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
运行temp.bat。 这将设置所需要的环境变量的ssh-添加工作。
Answer 13:
跑
ssh-agent bash
ssh-add
为了获得更多的细节,你可以搜索
ssh-agent
或运行
man ssh-agent
Answer 14:
我刚刚得到这个工作。 打开你~/.ssh/config
文件。
追加以下事项
Host github.com
IdentityFile ~/.ssh/github_rsa
这给了我提示的页面设置SSH GIT中说,单一的空间缩进是非常重要的...虽然我曾在这里从Heroku的配置是没有这个空间和工作正常。
Answer 15:
如果您按照这些说明,您的问题将得到解决。
如果你在Mac或Linux计算机上键入:
eval "$(ssh-agent -s)"
如果你在Windows机器上,键入:
ssh-agent -s
Answer 16:
让我提供另一种解决方案。 如果您刚刚安装的Git 1.8.2.2点左右,并要启用SSH,跟随良好writen 方向 。
通过一切步骤5.6,你可能会遇到一个轻微的障碍。 如果一个SSH代理已经在运行,当你重新启动bash,那么你可以得到下面的错误信息
Could not open a connection to your authentication agent
如果这样做,使用下面的命令来查看如果超过一个ssh-agent进程正在运行
ps aux | grep ssh
如果你看到一个以上的SSH代理服务,你需要杀死所有这些进程。 按如下方式使用kill命令(PID能够在您的计算机上是唯一的)
kill <PID>
例:
kill 1074
您已删除了所有的ssh-agent程序后,运行 再次命令,以确保他们都走了,然后重新启动猛砸。
瞧,你现在应该得到的东西是这样的:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
现在,你就可以继续步骤5.7和超越。
Answer 17:
注:这是一个回答这个问题 ,已合并与这一个。 这个问题是针对Windows 7,这意味着我的答案是对的Cygwin / MSYS / MSYS2。 这一次似乎对一些UNIX,在那里我不会期望SSH代理需要像这样进行管理。
这将运行SSH代理和认证仅在第一次,你需要它 ,而不是每次你打开你的Bash终端的时间。 它可用于一般使用SSH任何方案,包括的ssh本身和scp。 只需添加这/etc/profile.d/ssh-helper.sh
:
ssh-auth() {
# Start the SSH agent only if not running
[[ -z $(ps | grep ssh-agent) ]] && echo $(ssh-agent) > /tmp/ssh-agent-data.sh
# Identify the running SSH agent
[[ -z $SSH_AGENT_PID ]] && source /tmp/ssh-agent-data.sh > /dev/null
# Authenticate (change key path or make a symlink if needed)
[[ -z $(ssh-add -l | grep "/home/$(whoami)/.ssh/id_rsa") ]] && ssh-add
}
# You can repeat this for other commands using SSH
git() { ssh-auth; command git "$@"; }
Answer 18:
当您连接到服务器,例如使用参数-A:
ssh -A root@myhost
从手册页:
-A Enables forwarding of the authentication agent connection.
This can also be specified on a per-host basis in a configuration file.
Agent forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the agent's
UNIX-domain socket) can access the local agent through the forwarded
connection. An attacker cannot obtain key material from the agent,
however they can perform operations on the keys that enable them to
authenticate using the identities loaded into the agent.
Answer 19:
基本的解决方案来运行ssh-agent
在很多答案被回答。 然而乳宁ssh-agent
多次(每个打开终端或每个远程登录)将创建一个许多拷贝OT ssh-agent
在内存中运行。 这是建议,以避免这个问题很长,需要的脚本编写和/或分离复制文件或需要写太多的字符串~/.profile
或~/.schrc
。 让我提出简单的两线的解决方案:
对于sh, 庆典等:
# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
对于csh,tcsh的 ,等等:
# ~/.schrc
sh -c 'if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -c > ~/.ssh-agent.tcsh; fi'
eval `cat ~/.ssh-agent.tcsh`
什么是在这里:
- 搜索过程中
ssh-agent
的名称和当前用户 - 通过调用创建相应的shell脚本文件
ssh-agent
和运行ssh-agent
本身,如果没有当前用户ssh-agent
过程中发现 - 评估创建shell脚本,配置相应的环境
这是没有必要保护创建shell脚本~/.ssh-agent.tcsh
或~/.ssh-agent.sh
从其他用户访问的原因是:在一与通信ssh-agent
通过保护插座,不访问处理另一个用户,并在秒的另一用户可以发现ssh-agent
插座通过简单枚举文件在/tmp/
目录。 至于有关访问ssh-agent
的过程是一样的东西。
Answer 20:
尝试以下方法:
ssh-agent sh -c 'ssh-add && git push heroku master'
Answer 21:
阅读@蛋糕的回答作出解释。 在这里,我只是尝试自动修复。
如果您在使用与BASH Cygwin的终端,以下内容添加到$ HOME / .bashrc文件。 此仅在第一击终端开始的ssh-agent一次,并增加了键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”命令。
Answer 22:
我有这个问题,当我开始的ssh-agent,当它已经运行。 迷糊。 要看到,如果是这种情况,使用
eval $(ssh-agent)
看看这是一样的你认为是应该的。 就我而言,这是一个比我刚开始不同。
为了进一步验证,如果你有一个以上的SSH代理运行后,您可以查看:
ps -ef | grep ssh
Answer 23:
我有当我试图得到这个工作在Windows连接通过ssh藏匿了类似的问题
这里是为我工作的解决方案。
原来我在我的Windows机器上运行佳丽SSH代理 - 我会检查你正在运行的。 我怀疑这是选美,因为它来作为默认用腻子和WinSCP赋予
使用SSH-加不通过命令行与此类型的代理工作
你需要通过选美UI窗口,您可以在任务栏doublicking佳丽图标(一旦开始)获得加私钥。
在您添加的关键,佳丽你需要将其转换为PPK格式。 全部指令可以在这里如何SSH密钥转换PPK格式
这就对了。 有一次,我上传了我的钥匙藏匿我能使用SourceTree创建一个本地回购和复制遥控器。
希望这可以帮助...
Answer 24:
我决心用武力阻止(杀死)git的过程(SSH代理)错误,然后卸载的Git,然后重新安装的Git。
Answer 25:
如果您使用的腻子,也许你需要设置“连接/ SSH /认证/允许代理转发”选项为“真”。
Answer 26:
这个工作对我来说。
在CMD窗口中,输入以下命令:
cd path-to-Git/bin # (for example,cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add path/to/.ssh/id_rsa
Answer 27:
对于内置到Windows 10的bash,我说这对.bash_profile:
if [ -z $SSH_AUTH_SOCK ]; then
if [ -r ~/.ssh/env ]; then
source ~/.ssh/env
if [ `ps -p $SSH_AGENT_PID | wc -l` = 1 ]; then
rm ~/.ssh/env
unset SSH_AUTH_SOCK
fi
fi
fi
if [ -z $SSH_AUTH_SOCK ]; then
ssh-agent -s | sed 's/^echo/#echo/'> ~/.ssh/env
chmod 600 ~/.ssh/env
source ~/.ssh/env > /dev/null 2>&1
fi
Answer 28:
我有同样的问题, Ubuntu
和其他的解决方案并没有帮助我。 我终于实现了我的问题是什么。 我创造了我的ssh
的钥匙/root/.ssh
文件夹中,因此,即使当我跑ssh-add
为根,它不能做的工作,并不停地说
Could not open a connection to your authentication agent.
我建立了我的ssh公钥和私钥中/home/myUsername/
文件夹,我用
ssh-agent /bin/sh
然后我跑了
ssh-add /home/myUsername/.ssh/id_rsa
并解决了问题这样。
注:有关访问你的资料库git
添加您的git的密码,当您创建ssh
连键ssh-keygen -t rsa -C "your git email here"
。
Answer 29:
在Win8.1E使用Git猛砸,我的决议如下:
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
Answer 30:
另外,请检查您的远程URL。 使用git @ ... GitHub的代替https的:// proptocol
看到https://stackoverflow.com/a/33928364/551811
文章来源: Could not open a connection to your authentication agent