Git 无法打开与身份验证代理的连接
我遇到以下错误:Git 无法打开与身份验证代理的连接,git,ssh,ssh-agent,Git,Ssh,Ssh Agent,我遇到以下错误: $git推送heroku主机 警告:已将IP地址“50.19.85.132”的RSA主机密钥永久添加到已知主机列表中。 ! 您的指纹为b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65的密钥无权访问bitstarter。 我尝试添加密钥,但出现以下错误: $ssh add~/.ssh/id\u rsa.pub 无法打开与身份验证代理的连接。 ssh add和ssh(假设您使用的是openssh实现)需要一个环境变量来了解如何与ss
$git推送heroku主机
警告:已将IP地址“50.19.85.132”的RSA主机密钥永久添加到已知主机列表中。
! 您的指纹为b7:fd:15:25:02:8e:5f:06:4f:1c:af:f3:f0:c3:c2:65的密钥无权访问bitstarter。
我尝试添加密钥,但出现以下错误:
$ssh add~/.ssh/id\u rsa.pub
无法打开与身份验证代理的连接。
ssh add和ssh(假设您使用的是openssh实现)需要一个环境变量来了解如何与ssh代理进行通信。如果在与当前使用的命令提示符窗口不同的命令提示符窗口中启动代理,或者如果启动不正确,ssh add和ssh都不会看到该环境变量集(因为环境变量是在命令提示符中本地设置的)
您不会说您使用的是哪个版本的ssh,但如果您使用的是cygwin,您可以使用以下方法:
#添加到Bash配置文件
SSHAGENT=/usr/bin/ssh代理
SSHAGENTARGS=“-s”
如果[-z“$SSH\u AUTH\u SOCK”-a-x“$SSHAGENT”];然后
评估“$SSHAGENT$SSHAGENTARGS”`
陷阱“kill$SSH\u AGENT\u PID”0
fi
这将为您打开的每个新命令提示窗口自动启动代理(如果您在一个会话中打开多个命令提示,这是次优的,但至少它应该可以工作)。MsysGit或Cygwin
如果您使用的是Msysgit或Cygwin,您可以在以下网站找到一个很好的教程:
.bashrc
的文件添加到主文件夹#/bin/bash
eval`ssh代理-s`
ssh添加
~/.ssh/id\u rsa
位置。如果不是,请在ssh add
命令后包含完整路径~/.ssh/config
ForwardAgent yes
在原始教程中,ForwardAgent
参数是Yes
,但它是一个打字错误。使用所有小写字母,否则会出错ssh-add -K ~/.ssh/id_rsa
就这么简单。让我提供另一个解决方案。如果您刚刚安装了Git 1.8.2.2或其他版本,并且希望启用SSH,请遵循编写良好的说明 所有的一切都将进行到第5.6步,在这一步中,您可能会遇到一个小小的障碍。如果SSH代理已经在运行,那么在重新启动bash时可能会收到以下错误消息
Could not open a connection to your authentication agent
如果是,请使用以下命令查看是否有多个ssh代理进程正在运行
ps aux | grep ssh
如果看到多个ssh代理服务,则需要终止所有这些进程。使用kill命令如下(PID在您的计算机上是唯一的)
删除所有ssh代理进程后,再次运行px aux | grep ssh命令以确保它们已消失,然后重新启动Bash
瞧,你现在应该得到这样的东西:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
alias ssh-agent-cyg='eval `ssh-agent -s`'
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;
现在,您可以继续执行步骤5.7及更高版本。无法打开与身份验证代理的连接
要解决此错误,请执行以下操作:
狂欢节:
tcsh:
然后像平常一样使用ssh add
热点提示: 我总是忘记为上面的ssh代理命令键入什么,所以我在
.bashrc
文件中创建了一个别名,如下所示:
Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
alias ssh-agent-cyg='eval `ssh-agent -s`'
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;
现在,我可以使用ssh代理cyg
例如
原始修复源:
我在Linux上遇到了同样的问题,下面是我所做的: 基本上,ssh-agent命令会启动代理,但它并没有真正设置要运行的环境变量。它只是将这些变量输出到shell 您需要:
eval `ssh-agent`
然后进行ssh添加。请参阅。是否启动了ssh代理
?
在运行ssh add
命令之前,可能需要启动ssh agent
:
eval`ssh代理-s`
ssh添加
请注意,这将在Windows上启动msysgit Bash的代理。如果您使用的是不同的shell或操作系统,则可能需要使用命令的变体,如中列出的变体
请参阅以下答案:
eval
而不仅仅是ssh代理
?
要了解原因,请参阅
公钥与私钥
而且,每当我使用ssh add时,我总是向它添加私钥。文件
~/.ssh/id\u rsa.pub
看起来像一个公钥,我不确定这是否有效。您有~/.ssh/id\u rsa
文件吗?如果在文本编辑器中打开它,它是否会显示它是私钥?尝试执行以下步骤:
1) 打开gitbash并运行:cd~/.ssh
2) 尝试运行代理:eval$(ssh代理)
3) 现在,您可以运行以下命令:
ssh add-l
以下命令对我有效。我正在使用CentOS
exec ssh-agent bash
要详细介绍n3o针对Windows 7的答案 我的问题确实是一些必需的环境变量没有设置,n3o是正确的,ssh代理告诉您如何设置这些环境变量,但实际上没有设置它们 由于Windows不允许您执行“评估”,因此下面是要执行的操作: 重定向ssh ag的输出
set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
eval $(ssh-agent)
chgrp Users id_rsa
chmod 600 id_rsa
ssh-agent ssh-add id_rsa
eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
eval $(ssh-agent)
ps -ef | grep ssh
eval "$(ssh-agent -s)"
ssh-agent -s
ssh-agent sh -c 'ssh-add && git push heroku master'
ssh-agent -s > temp.txt
SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3044; export SSH_AGENT_PID;
echo Agent pid 3044;
set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764
set SSH_AGENT_PID=3044
###########################
# 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
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
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.
ssh-agent bash
ssh-add
ssh-agent
man ssh-agent
Could not open a connection to your authentication agent.
ssh-agent /bin/sh
ssh-add /home/myUsername/.ssh/id_rsa
ssh-agent cmd
ssh-add
Enter passphrase for /c/Users/username/.ssh/id_rsa: