Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 无法打开与身份验证代理的连接_Git_Ssh_Ssh Agent - Fatal编程技术网

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
    ,但它是一个打字错误。使用所有小写字母,否则会出错

  • 重新启动Msysgit。它将要求您输入一次密码短语,仅此而已(直到您结束会话,或者您的ssh代理被杀死)

  • Mac/OSX 如果不想在每次打开终端时启动新的ssh代理,请签出。我现在在Mac电脑上,所以我使用了教程来设置它,但我相信谷歌搜索会有很多关于Windows的信息

    更新:Mac上更好的解决方案是将您的密钥添加到Mac OS密钥链:

    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或操作系统,则可能需要使用命令的变体,如中列出的变体

    请参阅以下答案:

  • (包含有关如何使用ssh代理的详细说明)
  • 要自动启动ssh代理并允许单个实例在多个控制台窗口中工作,请参阅

    为什么我们需要使用
    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: