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

时间:2013-07-24 23:26:10

标签: 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.

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

$ ssh-add ~/.ssh/id_rsa.pub
Could not open a connection to your authentication agent.

37 个答案:

答案 0 :(得分:2074)

你有没有开始ssh-agent

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

eval `ssh-agent -s`
ssh-add

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

请参阅以下答案:

  1. ssh-add complains: Could not open a connection to your authentication agent
  2. Git push requires username and password(包含有关如何使用ssh-agent的详细说明)
  3. How to run (git/ssh) authentication agent?
  4. Could not open a connection to your authentication agent
  5. 要自动启动ssh-agent并允许单个实例在多个控制台窗口中工作,请参阅Start ssh-agent on login

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

    要了解原因,请参阅Robin Green's answer

    公钥与私钥

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

答案 1 :(得分:492)

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

eval $(ssh-agent)

更多信息请参阅:https://coderwall.com/p/rdi_wq

答案 2 :(得分:242)

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

exec ssh-agent bash

答案 3 :(得分:200)

MsysGit或Cygwin

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

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

  6. Mac / OS X

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

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

    ssh-add -K ~/.ssh/id_rsa
    

    这很简单。

答案 4 :(得分:191)

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

解决此错误:

击:

$ 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

E.g。

$ 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

答案 5 :(得分:114)

我遇到了与Linux相同的问题,这就是我所做的:

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

你需要:

eval `ssh-agent`

然后执行ssh-add。请参阅 Could not open a connection to your authentication agent

答案 6 :(得分:104)

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

你没有说你正在使用哪个版本的ssh,但如果你正在使用cygwin,你可以使用SSH Agent on Cygwin中的这个配方:

# 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

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

答案 7 :(得分:93)

尝试以下步骤:

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

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

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

答案 8 :(得分:70)

我使用$ ssh-agent -s来解决此问题,而不是使用$ eval `ssh-agent -s`

以下是我逐步执行的操作(GitBash上的第2步):

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

答案 9 :(得分:51)

在Windows 10中,我尝试了此处列出的所有答案,但似乎没有一个能够正常工作。事实上,他们给出了一个线索。要解决问题,只需要3个命令。 这个问题的想法是ssh-add需要使用当前的ssh-agent sock文件路径和pid号设置SSH_AUTH_SOCK和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代理。

答案 10 :(得分:29)

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

之后我遇到了一个问题,我的私钥太开放了,我设法找到了解决方案(来自here):

chgrp Users id_rsa

以及

chmod 600 id_rsa

最后我能够使用:

ssh-agent ssh-add id_rsa

答案 11 :(得分:27)

运行

ssh-agent bash
ssh-add

要获取更多详细信息,可以搜索

ssh-agent

或运行

man ssh-agent

答案 12 :(得分:26)

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

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

由于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-add工作所需的环境变量。

答案 13 :(得分:17)

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

附加以下内容 -

Host github.com
 IdentityFile ~/.ssh/github_rsa

给我提示的页面Set up SSH for Git 说单空间缩进很重要......虽然我在这里有Heroku的配置没有那个空间并且工作正常。

答案 14 :(得分:15)

如果您按照这些说明操作,问题就会解决。

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

eval "$(ssh-agent -s)"

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

ssh-agent -s

答案 15 :(得分:12)

  

注意: 这是对this question的回答,已与此合并。   这个问题适用于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 "$@"; }

答案 16 :(得分:11)

让我提供另一种解决方案。如果你刚刚安装了Git 1.8.2.2或者你想要启用SSH,请按照写得好的directions进行操作。

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

Could not open a connection to your authentication agent

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

ps aux | grep ssh

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

kill <PID>

示例:

kill 1074

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

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

Initializing new SSH agent...
succeeded
Enter passphrase for /c/Users/username/.ssh/id_rsa:

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

答案 17 :(得分:8)

连接到服务器时使用参数-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.

答案 18 :(得分:7)

许多答案都回答了运行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

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
  • 通过调用ssh-agent创建适当的shell脚本文件,如果找不到当前用户ssh-agent进程,则运行ssh-agent本身
  • 评估创建的配置适当环境的shell脚本

没有必要保护创建的shell脚本~/.ssh-agent.tcsh~/.ssh-agent.sh免受其他用户访问,因为:与ssh-agent的第一次通信是通过受保护的套接字处理的,而另一个用户无法访问用户和其他用户可以通过ssh-agent目录中的枚举文件找到/tmp/ socket简单。至于访问ssh-agent进程,它是一样的。

答案 19 :(得分:5)

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

ssh-agent cmd 
ssh-add

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

Enter passphrase for /c/Users/username/.ssh/id_rsa:

答案 20 :(得分:5)

尝试以下方法:

ssh-agent sh -c 'ssh-add && git push heroku master'

答案 21 :(得分:5)

阅读@cupcake's answer以获取解释。在这里,我只尝试自动修复。

如果您将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

不要忘记在&#34; ssh-add&#34;中添加正确的密钥。命令。

答案 22 :(得分:4)

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

eval $(ssh-agent)

看看这是否与您认为的相同。就我而言,它与我刚刚开始时的不同。

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

ps -ef | grep ssh

答案 23 :(得分:4)

当我尝试在Windows上通过ssh连接到stash时,我遇到了类似的问题

这是适合我的解决方案。

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

  2. ssh-add无法在命令行中使用此类代理

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

  4. 在将关键字添加到Pageant之前,您需要将其转换为PPK格式。完整说明可在此处How to convert SSH key to ppk format

  5. 获取
  6. 就是这样。一旦我将我的密钥上传到藏匿处,我就可以使用SourceTree创建本地仓库并克隆遥控器。

  7. 希望这会有所帮助......

答案 24 :(得分:4)

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

Could not open a connection to your authentication agent.

我在/home/myUsername/文件夹中创建了ssh的公钥和私钥,并且使用了

ssh-agent /bin/sh

然后我跑了

ssh-add /home/myUsername/.ssh/id_rsa

问题就这样解决了。

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

答案 25 :(得分:3)

如果你正在使用Putty,也许你需要设置&#34; Connection / SSH / Auth / Allow代理转发&#34;选项&#34; true&#34;。

enter image description here

答案 26 :(得分:3)

对我而言worked

  

在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

答案 27 :(得分:3)

我通过强制停止(杀死)git进程(ssh代理),然后卸载Git,然后再次安装Git来解决错误。

答案 28 :(得分:3)

对于Windows 10中内置的bash,我将其添加到.bash_profile:

Sub AddNewDevice()

    Dim objCollection As Object

    For Each wd In CreateObject("Shell.Application").Windows

        If wd = "Internet Explorer" Then
            If InStr(UCase(wd.document.Title), "ADD A NEW CISCO ACS") <> 0 Then
                'Debug.Print "Yes"
                Exit For
            End If
        End If
    Next wd
    wd.Visible = True

    Set objCollection = wd.document.getElementsByTagName("input")
    i = 0
    While i < objCollection.Length
        'Name
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_ctl2_6_ctl4__X" Then
            objCollection(i).Value = Sheets("Main").Range("b4")
        End If
        'Description
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_ctl2_7_ctl4__X" Then
            objCollection(i).Value = Sheets("Main").Range("b5")
        End If
        'IP Address/Subnet
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_ctl2_11_ctl4__X" Then
            objCollection(i).Value = Sheets("Main").Range("b6")
        End If
        'TACACS+
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_wctl1_2_ColumnEditor1__X" Then
            objCollection(i).Click
        End If
        'Shared Secret
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_wctl1_3_ColumnEditor1__X" Then
            objCollection(i).Value = Sheets("Main").Range("B22")
        End If
        'Single Connect
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_wctl1_4_ColumnEditor1__X" And _
            Sheets("Main").Range("B25") = "Yes" Then
            objCollection(i).Click
        End If
        'Legacy TACACS+
        If objCollection(i).Name = "Y__0__Cctl1_ctl8_wctl1_5_ColumnEditor1__X" And _
            Sheets("Main").Range("B25") = "Yes" Then
            objCollection(i).Click
        End If
       i = i + 1
    Wend
    Set objCollection = Nothing
    Set objCollection = wd.document.getElementsByTagName("select")
    i = 0
    While i < objCollection.Length
        'Location
        If objCollection(i).Name = "Y__0__C22_ctl8_ctl2_8_ctl4_wctl1__X" Then
            objCollection(i).selectedIndex = Sheets("Main").Range("B23")
        End If
        'Device Type
        If objCollection(i).Name = "Y__0__C22_ctl8_ctl2_9_ctl4_wctl1__X" Then
            objCollection(i).selectedIndex = Sheets("Main").Range("B24")
        End If
        'DSR and Above
        If objCollection(i).Name = "Y__0__C22_ctl8_ctl2_10_ctl4_ctl1__X" Then
            objCollection(i).selectedIndex = 2
        End If
       i = i + 1
    Wend
    Set submitButton = wd.document.getElementById("Y__0__Cctl10___X")
        'submitButton.Click
    Set objCollection = Nothing


End Sub

答案 29 :(得分:2)

在Win8.1E上使用Git Bash,我的解决方案如下:

eval $(ssh-agent) > /dev/null
ssh-add ~/.ssh/id_rsa

答案 30 :(得分:2)

适用于Windows中的PowerShell

我在使用PoSH和Start-SshAgent / Add-SshKey命令时遇到了问题,因此我制作了一个可能帮助一些人的快速脚本。这旨在添加到您可以通过执行notepad $PROFILE

进行编辑的PowerShell配置文件中
if ($(Get-Process ssh-agent) -eq $null)
{
    $ExecutionContext.InvokeCommand.ExpandString($(ssh-agent -c).Replace("setenv", "set"));
}

它将检测ssh-agent是否正在运行,并且只有在没有代理运行时才执行。请注意,$ExecutionContext.InvokeCommand.ExpandString是一个非常危险的命令,因此如果您使用ssh-agent的不受信任的副本,则可能不想使用此解决方案。

答案 31 :(得分:2)

还要检查你的远程网址。使用git @ github ...而不是https:// proptocol

请参阅https://stackoverflow.com/a/33928364/551811

答案 32 :(得分:1)

以下是我在使用PowerShell时提出的解决方案。

将以下功能添加到Microsoft.PowerShell_profile.ps1

function RunSsh($userIdentity ) {
   $agent=ssh-agent
   $position=$agent[0].IndexOf("=")
   $ending=$agent[0].IndexOf(";")

   $variableStartPosition=$agent[0].IndexOf("export")
   $variableEndPosition=$agent[0].LastIndexOf(";")
   $variableName=$agent[0].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[0].Substring($position+1,$ending-$position-1))

   $position=$agent[1].IndexOf("=")
   $ending=$agent[1].IndexOf(";")

   $variableStartPosition=$agent[1].IndexOf("export")
   $variableEndPosition=$agent[1].LastIndexOf(";")
   $variableName=$agent[1].Substring($variableStartPosition+7,$variableEndPosition-$variableStartPosition-7)
   [Environment]::SetEnvironmentVariable($variableName, $agent[1].Substring($position+1,$ending-$position-1))

   if($userIdentity.Length -eq 0) {
      ssh-add
   } else {
      ssh-add $userIdentity
   }
}

现在,从命令行,您可以运行RunSsh使用~\.ssh文件夹中的身份文件,或者使用RunSsh C:\ssh\id_rsa传递身份文件,其中C:\ssh\id_rsa是您的身份文件。

为此,您需要在ssh-add环境变量中添加ssh-agentpath

答案 33 :(得分:0)

即使我收到“无法打开与身份验证代理的连接”。在生成和添加SSH密钥时运行该命令:ssh-add ~/.ssh/id_rsa。我通过停止在我的机器上运行的多个ssh-agent实例解决了这个问题,然后从我的Windows机器上的控制面板上卸载了Git,然后再次安装了Git,现在一切正常。

答案 34 :(得分:0)

对于Windows用户,我发现cmd“ eval ssh-agent -s”不起作用,但是使用git bash可以使“ eval ssh-agent -s; ssh-add KEY_LOCATION”有效,并确保Windows服务尚未禁用“ OpenSSH密钥管理”

答案 35 :(得分:0)

就我而言,我的Comodo firewall已经对ssh代理进行了沙盒处理。一旦我禁用了沙盒,我就能够克隆存储库。

仅供参考,我在Windows 7上使用Comodo防火墙。

答案 36 :(得分:0)

最简单的解决方案不一定是坏的。

当您使用无密码私钥时,您既不需要 ssh-agent 也不需要 ssh-add,请参阅 https://stackoverflow.com/a/48290333/11154841

通过这个,我摆脱了错误 Could not open a connection to your authentication agent. ssh-add exit code 2

这不一定是不安全的:您只需要在使用后立即删除密钥对的两个密钥。这意味着,您必须删除服务器上的公钥并删除客户端上的私钥。不用说:永远不要再使用它们,甚至不要在某处保留备份。

请注意,您可以从私钥创建公钥,但不能反过来。 通常,只需从 Git 门户上的注册密钥中删除公钥就足够了,但最好将它们都删除,这样同一个公钥就再也不会被使用了。即使有人偷了你的私钥,如果你不再使用它的公钥也没有任何用处。

使用无密码私钥,您甚至可以在 Docker 中使用它来绕过任何密码条目。你可以在没有任何密码的情况下克隆一个 git repo,你只需要无密码的私钥。以 Dockerfile: clone repo with passwordless private key. Errors: “authentication agent” or “read_passphrase: can't open /dev/tty” 为例。

相关问题