我在linux上使用git,当推送到gitlab时,有时它会卡在:
debug1:连接到gitlab.com [52.167.219.168]端口22。
或
似乎重启linux可以解决它,但没有机构喜欢重启机器。 所以,我试图杀死ssh-agent进程,然后重新启动它。debug1:client_input_channel_req:channel 0 rtype keepalive@openssh.com回复1
debug3:发送数据包:输入100
但是在kill之后进程总是defunct
,然后我根本不能通过ssh使用git,所以有没有办法重新启动ssh-agent,或者解决上面描述的问题而不重新启动机?
@Update
我使用的ssh键包含关键短语,我会在第一次使用ssh键时输入。
问题通常发生在我将Linux桌面从睡眠状态恢复后,因此网络重新连接,不确定这是否重要?
同样,是否有人知道如何杀死或重新启动ssh-agent
代理,而不会使其成为defunct
?
答案 0 :(得分:6)
您可以通过运行以下命令杀死 ssh-agent:
contained
答案 1 :(得分:3)
您可以尝试使用此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
答案 2 :(得分:1)
多种方式:
killall ssh-agent
SSH_AGENT_PID="$(pidof ssh-agent)" ssh-agent -k
kill -9 $(pidof ssh-agent)
pidof
来自 procps 项目。如果它是打包的,你也许可以为你的发行版找到它
答案 3 :(得分:0)
它显示defunct
可能是因为其父进程仍在监视它,因此它并未从进程表中删除。没什么大不了的,这个过程被杀死了。只需启动一个新的ssh-agent:
eval $(ssh-agent)
ssh-add
答案 4 :(得分:0)
是的,ssh-agent 可能已经失效:[ssh-agent] <defunct>
试图杀死代理可能会有所帮助:
eval "$(ssh-agent -k)"
还要尝试检查您的密钥环进程(例如 gnome-keyring-daemon),重新启动它甚至删除 ssh 套接字文件:
rm /run/user/$UID/keyring/ssh