Git-如何在Linux上正确杀死ssh-agent

Eri*_*ang 5 linux git ssh ssh-agent

我在linux上使用git时,推送到gitlab时,有时卡在:

debug1:连接到gitlab.com [52.167.219.168]端口22。

要么

debug1:client_input_channel_req:通道0 rtype keepalive@openssh.com回复1

debug3:发送数据包:类型100

重新启动linux似乎可以解决问题,但是没有人喜欢重新启动计算机。因此,我试图杀死ssh-agent进程,然后重新启动它。

但是该过程总是defunct在杀死之后,然后我根本无法通过ssh使用git,那么是否有任何方法可以重新启动ssh-agent,或解决上述问题而无需重新启动计算机?


@更新

我使用的ssh密钥包括密钥短语,我将在首次使用ssh密钥时输入该短语。

问题通常发生在我将Linux桌面从睡眠状态恢复后,因此重新连接了网络,不确定这是否重要?

再说一次,是否有人知道如何杀死或重新启动ssh-agent代理而不使其成为代理defunct

sma*_*c89 8

很多方法:

  • killall ssh-agent
  • SSH_AGENT_PID="$(pidof ssh-agent)" ssh-agent -k
  • kill -9 $(pidof ssh-agent)

pidof来自procps项目。如果它已打包,您也许可以在您的发行版中找到它


Edu*_*ans 7

您可以通过运行以下命令终止 ssh-agent:

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

  • 那么,很可能 ssh-agent 没有运行。尝试启动运行 `eval "$(ssh-agent -s)"` 的代理,然后终止它。顺便问一下,您正在使用什么操作系统和 shell? (4认同)
  • 不,代理肯定正在运行。您假设它只能通过执行 `eval "$(ssh-agent -s)"` 来启动,但这并不是它启动的唯一方法。当您尝试 ssh 到远程服务器时它也会启动。在这种情况下,当前 shell 中未设置 SSH_AGENT_PID,但运行 pidof ssh-agent 或 pgrep ssh-agent 会显示正在运行的 PID。 (4认同)
  • 不起作用:SSH_AGENT_PID 未设置,无法终止代理 (3认同)

dan*_*ter 5

您可以尝试使用此 bash 脚本来终止 SSH 代理:

#!/bin/bash

## in .bash_profile

SSHAGENT=`which ssh-agent`
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
    eval `$SSHAGENT $SSHAGENTARGS`
    trap "kill $SSH_AGENT_PID" 0
fi

## in .logout

if [ ${SSH_AGENT_PID+1} == 1 ]; then
    ssh-add -D
    ssh-agent -k > /dev/null 2>&1
    unset SSH_AGENT_PID
    unset SSH_AUTH_SOCK
fi
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚在我的 linux 上尝试过这个,使用脚本后 ssh-agent 进程失效,结果与 `kill -9` 命令相同。 (2认同)