无法打开与身份验证代理的连接

Dan*_*ith 1473 ssh ssh-agent

我遇到了这个错误:

$ 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.
Run Code Online (Sandbox Code Playgroud)

我试图添加密钥,我在下面收到此错误:

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud)

小智 2219

你有没有开始ssh-agent

您可能需要ssh-agent在运行ssh-add命令之前启动:

eval `ssh-agent -s`
ssh-add
Run Code Online (Sandbox Code Playgroud)

请注意,这将在Windows上启动msysgit Bash的代理.如果您使用的是其他shell或操作系统,则可能需要使用该命令的变体,例如其他答案中列出的变体.

请参阅以下答案:

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

要自动启动ssh-agent并允许单个实例在多个控制台窗口中工作,请参阅登录时启动ssh-agent.

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

要找出原因,请参阅Robin Green的回答.

公钥与私钥

此外,每当我使用时ssh-add,我总是添加私钥.该文件~/.ssh/id_rsa.pub看起来像一个公钥,我不确定这是否有效.你有~/.ssh/id_rsa文件吗?如果你在文本编辑器中打开它,它是否说它是私钥?

  • 我很好奇为什么`eval ssh-agent -s`可以工作,但是`ssh-agent`就不行了. (19认同)
  • @xtian我不确定我是否理解这个问题.我不知道确切的细节,但我猜测私钥永远不会通过网络发送.我认为`ssh-add`只是在主机上解密一个加密的私钥,所以它可以在本地使用......它从来没有发送给任何人***.我猜测只有公钥才能通过网络发送.我的理解不正确吗? (17认同)
  • @DanielM:SSH需要两件事才能使用ssh-agent:一个在后台运行的ssh-agent实例,以及一个环境变量集,它告诉SSH应该使用哪个套接字来连接代理(`SSH_AUTH_SOCK` IIRC).如果您只运行`ssh-agent`,那么代理将启动,但SSH将不知道在哪里可以找到它. (11认同)
  • 你太善良的蛋糕了.你是绝对正确的.我的错.[ex here](https://wiki.archlinux.org/index.php/SSH_Keys#ssh-agent); ssh-add为用户的ssh-agent添加私钥(运行进程)可以代表客户端/主机,服务器接受rsa-whatever键.吉兹.我不知道是什么让我如此兴奋. (5认同)
  • 谢谢你的回复.我刚注意到你在命令中使用了反引号.我很困惑为什么反引号(`)在我的bash shell上工作eval命令而不是单引号/双引号(',")? (4认同)
  • @WeishiZeng我知道这有点迟到了,但它可以帮助人们.反引号内的命令在一个新shell中执行,输出发送到eval.如果执行ssh-agent,并复制/粘贴输出,然后执行它,它就会像使用反引号一样工作. (3认同)
  • 如果您在 Windows 上使用 git-bash,请查看下面 Victor Alves 的答案,因为他的解决方案在 Windows 10 上对我有用。 (2认同)

Vic*_*ves 510

我尝试了其他解决方案无济于事.我做了更多研究,发现以下命令有效.我使用的是Windows 7和Git Bash.

eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)

更多信息请访问:https://coderwall.com/p/rdi_wq

  • 也适用于Windows 8. (14认同)
  • 伟大的 !!也适用于 Windows 10。 (5认同)
  • 曾参与 Manjaro 工作 (2认同)
  • $ eval "$(ssh-agent -s)" 在 Windows 10 上为我工作 (2认同)
  • 谢谢你,很有魅力!根据您使用的控制台,它可能不知道使用哪个套接字来连接到 ssh 代理服务, eval 似乎通过设置该控制台的环境变量来解决这个问题,至少我是这样理解的 (2认同)
  • 在 Windows 11 上工作。 (2认同)

小智 248

以下命令对我有用.我正在使用CentOS.

exec ssh-agent bash
Run Code Online (Sandbox Code Playgroud)

  • 我ssh'ed到一个docker容器和`ssh-add my.id_rsa`会失败我.但是`exec ssh-agent zsh`提供了一个我可以`ssh-add`的环境,没有任何问题.而且我在我的docker容器里面:) (4认同)
  • 谢谢,这对我有用,我为我的shell运行了'exec ssh-agent zsh'。 (2认同)
  • 根据[这个已删除的“答案”](http://stackoverflow.com/a/23115970/456814),它也适用于 Amazon Linux AMI。我想这是一个 Unix/Linux/*nix 解决方案。 (2认同)

Rob*_*obW 205

MsysGit或Cygwin

如果你正在使用Msysgit或Cygwin,你可以在msysgit和cygwin和bash中的SSH-Agent上找到一个很好的教程:

  1. 添加一个调用.bashrc您的主文件夹的文件.

  2. 打开文件并粘贴到:

    #!/bin/bash
    eval `ssh-agent -s`
    ssh-add
    
    Run Code Online (Sandbox Code Playgroud)
  3. 这假设您的密钥位于传统~/.ssh/id_rsa位置.如果不是,请在ssh-add命令后包含完整路径.

  4. 添加或创建~/.ssh/config包含内容的文件

    ForwardAgent yes
    
    Run Code Online (Sandbox Code Playgroud)

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

  5. 重启Msysgit.它会要求您输入一次密码,就是这样(直到您结束会话,或者您的ssh-agent被杀死.)

Mac/OS X.

如果您不想在每次打开终端时启动新的ssh-agent,请查看Keychain.我现在在Mac上,所以我在Mac OS X上使用了zsh&keychain的教程ssh-agent进行设置,但我确信Google搜索会有大量的Windows信息.

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

ssh-add -K ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

就那么简单.

  • 它应该是`ps -u $(whoami)| grep ssh-agent&>/dev/null || eval $(ssh-agent)` - 否则每次都会启动一个新的ssh-agent.当用户有cronjobs时,不时地杀死我的机器. (2认同)
  • "ForwardAgent yes"不是必需的,并且是[非理论安全风险](https://heipei.github.io/2015/02/26/SSH-Agent-Forwarding-considered-harmful/),如果它被设置为任何不可信任的服务器.无论此设置如何,对密钥代理的本地访问都应起作用. (2认同)

Chr*_*now 199

无法打开与身份验证代理的连接

要解决此错误:

庆典:

$ eval `ssh-agent -s`
Run Code Online (Sandbox Code Playgroud)

tcsh中:

$ eval `ssh-agent -c`
Run Code Online (Sandbox Code Playgroud)

然后ssh-add像往常一样使用.


热门提示:

我总是忘记为上面的ssh-agent命令输入什么,所以我在我的.bashrc文件中创建了一个别名,如下所示:

alias ssh-agent-cyg='eval `ssh-agent -s`'
Run Code Online (Sandbox Code Playgroud)

现在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
Run Code Online (Sandbox Code Playgroud)

原始修复源:

http://cygwin.com/ml/cygwin/2011-10/msg00313.html

  • 每次你以前运行`ssh-agent`时都需要运行`eval`命令.我现在使用别名,请参阅更新的答案我是如何做到的. (3认同)
  • 楼主你真棒 谢谢。** 我在克隆 bitbucket 存储库时遇到了同样的问题,我已经设置了一个 ssh 密钥,但一直收到错误:`致命:无法从远程存储库读取。`。 (2认同)

n3o*_*n3o 114

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

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

你需要:

eval `ssh-agent`
Run Code Online (Sandbox Code Playgroud)

然后执行ssh-add.请参见无法打开与身份验证代理的连接.

  • 这个答案应该被接受,解决了我的问题.谢谢 (2认同)

Rob*_*een 112

ssh-add和ssh(假设您使用的是openssh实现)需要一个环境变量来知道如何与ssh代理进行通信.如果您在不同的命令提示符窗口中将代理程序启动到您现在使用的代理程序窗口,或者如果启动错误,则ssh-add和ssh都不会看到该环境变量集(因为环境变量在本地设置为命令提示它已设置).

你没有说你正在使用哪个版本的ssh,但如果你正在使用cygwin,你可以在Cygwin上使用来自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
Run Code Online (Sandbox Code Playgroud)

这将为您打开的每个新命令提示符窗口自动启动代理程序(如果您在一个会话中打开多个命令提示符,这是次优的,但至少它应该工作).

  • 我从另一个SO问题链接到这里.我可以问为什么有必要将它添加到Bash配置文件中?在我的机器上,我需要做的就是运行`eval $(ssh-agent)`,我可以为每个新的终端窗口使用无密码的ssh. (9认同)
  • @shuhalo 我在代码下面写了它的作用。 (3认同)

小智 95

尝试以下步骤:

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

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

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

  • 这是对我有用的唯一解决方案(在Windows 7上).首先我用了`ps aux | 在Rick的杀死代理人的答案中,grep ssh`和`kill`命令.之后`ssh-add`在没有-l开关的情况下工作(使用-l给出错误).在Rick的答案中,'eval'ssh-agent'不起作用,我不得不像Chechoro的答案一样使用`eval $(ssh-agent)`. (8认同)
  • +1我遇到与OP(Windows 7)完全相同的问题,这是唯一对我有用的解决方案. (6认同)
  • @Frug 这是反引号,而不是撇号;在 shell 脚本中,这意味着执行其中包含的内容。`$(ssh-agent)` 等价于 `\`ssh-agent\`` 但更具可读性。 (2认同)

vin*_*raw 80

$ ssh-agent -s我曾经$ eval `ssh-agent -s`解决过这个问题而不是使用.

这是我一步一步执行的(GitBash上的第2步):

  1. 清理了我的.ssh文件夹 C:\user\<username>\.ssh\
  2. 生成新的SSH密钥
    $ ssh-keygen -t rsa -b 4096 -C "xyz@abc.com"
  3. 检查是否有任何进程ID(ssh代理)已在运行.
    $ ps aux | grep ssh
  4. (可选)如果在步骤3中找到任何内容,请将其删除
    $ kill <pids>
  5. 启动了ssh代理
    $ eval `ssh-agent -s`
  6. 在步骤2中为ssh代理添加了ssh密钥
    $ ssh-add ~/.ssh/id_rsa

  • 'eval'不被识别为内部或外部命令,可操作程序或批处理文件. (2认同)

bp *_*ang 66

ssh-agent bash
ssh-add
Run Code Online (Sandbox Code Playgroud)

要获取更多详细信息,您可以搜索ssh-agent或运行

ssh-agent
Run Code Online (Sandbox Code Playgroud)

  • 我建议如果您在Windows上使用git bash,请尝试此操作。 (5认同)
  • 这是一个适用于 Windows 的!(在 W10pro build 1809 和 git 2.21.0 上测试) (2认同)
  • 我正在使用 ZSH,这对我有用: `ssh-agent zsh; ssh-添加` (2认同)

BIO*_*ARD 54

在Windows 10中,我尝试了此处列出的所有答案,但它们似乎都没有效果.事实上,他们给出了一个线索.要解决问题,只需要3个命令.这个问题的想法是ssh-add需要使用当前ssh-agent sock文件路径和pid号设置SSH_AUTH_SOCK和SSH_AGENT_PID环境变量.

ssh-agent -s > temp.txt
Run Code Online (Sandbox Code Playgroud)

这将在文件中保存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;
Run Code Online (Sandbox Code Playgroud)

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

set SSH_AUTH_SOCK=/tmp/ssh-kjmxRb2764/agent.2764
Run Code Online (Sandbox Code Playgroud)

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

set SSH_AGENT_PID=3044
Run Code Online (Sandbox Code Playgroud)

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

  • 不,还是一样的. (6认同)
  • 这些步骤与'eval $(ssh-agent)'相同 (3认同)
  • 这个答案解决了我的问题 (3认同)
  • 谢谢!这正是我所需要的. (2认同)
  • 在我的Windows 10上已修复!谢谢! (2认同)

aqm*_*aqm 32

对于窗口用户,我发现 cmdeval `ssh-agent -s`不起作用,但是使用 git bash 工作了eval `ssh-agent -s`; ssh-add KEY_LOCATION,并确保没有禁用 Windows 服务“OpenSSH 密钥管理”


Vng*_*nge 30

我遇到的一件事是eval使用Cygwin对我不起作用,对我有用的是ssh-agent ssh-add id_rsa.

之后我遇到了一个问题,我的私钥太开放了,我设法找到了解决方案(从这里开始):

chgrp Users id_rsa
Run Code Online (Sandbox Code Playgroud)

以及

chmod 600 id_rsa
Run Code Online (Sandbox Code Playgroud)

最后我能够使用:

ssh-agent ssh-add id_rsa
Run Code Online (Sandbox Code Playgroud)


Ste*_*rta 27

放大n3o对Windows 7的回答......

我的问题确实是没有设置一些必需的环境变量,并且n3o是正确的,ssh-agent告诉你如何设置这些环境变量,但实际上并没有设置它们.

由于Windows不允许您执行"eval",因此以下是做什么:

使用ssh-agent的输出重定向到批处理文件

ssh-agent > temp.bat
Run Code Online (Sandbox Code Playgroud)

现在使用记事本等文本编辑器编辑temp.bat.对于前两行中的每一行: - 在行的开头插入单词"set"和空格. - 删除第一个分号及其后的所有内容.

现在删除第三行.你的temp.bat应该是这样的:

set SSH_AUTH_SOCK=/tmp/ssh-EorQv10636/agent.10636
set SSH_AGENT_PID=8608
Run Code Online (Sandbox Code Playgroud)

运行temp.bat.这将设置ssh-add工作所需的环境变量.


Pau*_*tte 18

我刚刚开始工作了.打开你的~/.ssh/config文件.

附上以下内容 -

Host github.com
 IdentityFile ~/.ssh/github_rsa
Run Code Online (Sandbox Code Playgroud)

给我提示的页面为Git设置SSH 说单空间缩进很重要......虽然我在Heroku中有一个没有那个空间并且工作正常的配置.

  • 如果您不想输入密码,请创建一个没有密码的密钥。如果您只是打算将密码存储在脚本中,那么拥有密码短语是没有意义的。 (2认同)

小智 17

如果您按照这些说明操作,您的问题就会得到解决.

如果您使用的是Mac或Linux计算机,请键入:

eval "$(ssh-agent -s)"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Windows计算机,请键入:

ssh-agent -s
Run Code Online (Sandbox Code Playgroud)


小智 14

您需要启动 ssh 代理

在您的终端中,运行:

eval $(ssh-agent -s)


小智 13

让我提供另一种解决方案.如果您刚刚安装的Git 1.8.2.2点左右,并要启用SSH,跟随良好writen 方向.

一直到步骤5.6,你可能会遇到轻微的障碍.如果SSH代理已在运行,则在重新启动bash时可能会收到以下错误消息

Could not open a connection to your authentication agent
Run Code Online (Sandbox Code Playgroud)

如果这样做,请使用以下命令查看是否正在运行多个ssh-agent进程

ps aux | grep ssh
Run Code Online (Sandbox Code Playgroud)

如果您看到多个ssh-agent服务,则需要终止所有这些进程.使用kill命令如下(PID将在您的计算机上是唯一的)

kill <PID>
Run Code Online (Sandbox Code Playgroud)

例:

kill 1074
Run Code Online (Sandbox Code Playgroud)

删除所有ssh-agent进程后,运行px aux | grep ssh命令再次确定它们已经消失,然后重新启动Bash.

瞧,你现在应该得到这样的东西:

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:
Run Code Online (Sandbox Code Playgroud)

现在,您可以继续执行步骤5.7及更高版本.


Ren*_*lva 12

注意:这是这个问题的答案,已经与这个问题合并.这个问题适用于Windows 7,这意味着我的答案是针对Cygwin/MSYS/MSYS2.对于某些unix来说,这个似乎是一个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 "$@"; }
Run Code Online (Sandbox Code Playgroud)

  • ssh-agent进程似乎与用于运行该进程的终端没有关联。我想`ps -A | 应该使用grep ssh-agent或ps h -C ssh-agent来代替ps | grep ssh-agent` (2认同)
  • $ HOME / .ssh可能比`/ home / $(whoami)/。ssh`更健壮。 (2认同)

Leb*_*nik 8

连接到服务器时使用参数-A,例如:

ssh -A root@myhost
Run Code Online (Sandbox Code Playgroud)

来自手册页:

-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.
Run Code Online (Sandbox Code Playgroud)


okl*_*las 8

ssh-agent许多答案都回答了运行的基本解决方案.但是,运行ssh-agent多次(每个打开的终端或每个远程登录)将创建ssh-agent在内存中运行的许多副本.建议避免该问题的脚本很长,需要编写和/或复制分离的文件,或者需要在~/.profile或写入太多的字符串~/.schrc.我建议简单的两个字符串解决方案:

对于sh,bash等:

# ~/.profile
if ! pgrep -q -U `whoami` -x 'ssh-agent'; then ssh-agent -s > ~/.ssh-agent.sh; fi
. ~/.ssh-agent.sh
Run Code Online (Sandbox Code Playgroud)

对于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`
Run Code Online (Sandbox Code Playgroud)

这是什么:

  • ssh-agent按名称和当前用户搜索流程
  • 如果找不到当前用户进程,则通过调用ssh-agent并运行ssh-agent自己来创建适当的shell脚本文件ssh-agent
  • 评估创建的shell脚本,它配置适当的环境

没有必要保护创建的shell脚本~/.ssh-agent.tcsh~/.ssh-agent.sh来自其他用户的访问权限,因为:首先与ssh-agent另一个用户无法访问的受保护套接字进行通信,而另一个用户可以ssh-agent通过/tmp/目录中的枚举文件找到简单的套接字.至于访问ssh-agent流程,它是相同的事情.


All*_*lan 8

在 Windows 10 中,使用命令提示符终端,以下对我有用:

ssh-agent cmd 
ssh-add
Run Code Online (Sandbox Code Playgroud)

在此之后,您应该被要求输入密码:

Enter passphrase for /c/Users/username/.ssh/id_rsa:
Run Code Online (Sandbox Code Playgroud)


Mer*_*rka 7

我遇到了同样的问题,Ubuntu其他解决方案也无济于事。我终于意识到我的问题所在。我已经ssh/root/.ssh文件夹中创建了密钥,所以即使我ssh-add以root身份运行,它也无法完成工作并继续说

Could not open a connection to your authentication agent.
Run Code Online (Sandbox Code Playgroud)

我在/home/myUsername/文件夹中 创建了ssh公钥和私钥,

ssh-agent /bin/sh
Run Code Online (Sandbox Code Playgroud)

然后我跑了

ssh-add /home/myUsername/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)

这样就解决了问题。

注意:要在使用git创建ssh密钥时添加git密码来访问存储库ssh-keygen -t rsa -C "your git email here"


Jah*_*mic 6

我遇到了这个问题,当我启动 ssh-agent 时,它已经在运行。感到困惑。要查看是否是这种情况,请使用

eval $(ssh-agent)
Run Code Online (Sandbox Code Playgroud)

看看这是否和你认为应该是一样的。就我而言,它与我刚开始的情况不同。

要进一步验证是否有多个 ssh-agent 在运行,您可以查看:

ps -ef | grep ssh
Run Code Online (Sandbox Code Playgroud)

  • 我认为运行 `eval $(ssh-agent)` 应该每次都创建一个具有不同 PID 的新代理,尽管我可能是错的。 (2认同)

ken*_*orb 6

请尝试以下操作:

ssh-agent sh -c 'ssh-add && git push heroku master'
Run Code Online (Sandbox Code Playgroud)


Kir*_*han 6

阅读@cupcake的答案以获取解释。在这里,我仅尝试自动化修复程序。

如果将Cygwin终端与BASH一起使用,请将以下内容添加到$ HOME / .bashrc文件中。这仅在第一个Bash终端中启动ssh-agent一次,并将密钥添加到ssh-agent。(不确定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
Run Code Online (Sandbox Code Playgroud)

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


小智 5

Windows 8.1 E 上使用Git Bash,我的解决方案如下:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa
Run Code Online (Sandbox Code Playgroud)


Moo*_*ker 5

当我试图让它在 Windows 上工作以通过 ssh 连接到 stash 时,我遇到了类似的问题

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

  1. 原来我在我的 Windows 机器上运行 Pageant ssh 代理 - 我会检查你正在运行什么。我怀疑它是 Pageant,因为它是 Putty 和 winScp 的默认设置

  2. ssh-add 不能从命令行使用这种类型的代理

  3. 您需要通过选美UI窗口添加私钥,您可以通过双击任务栏中的选美图标(一旦启动)来获取该窗口。

  4. 在将密钥添加到 Pageant 之前,您需要将其转换为 PPK 格式。此处提供完整说明如何将 SSH 密钥转换为 ppk 格式

  5. 这就对了。一旦我将密钥上传到 stash,我就可以使用 SourceTree 创建本地存储库并克隆远程存储库。

希望这可以帮助...


Kip*_*Kip 5

对于内置于 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
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

1143588 次

最近记录:

6 年,5 月 前