私はLinuxでgitを使用していますが、gitlabにプッシュするときに、次のいずれかでスタックすることがあります。
debug1:gitlab.com [52.167.219.168]ポート22に接続しています。
または
debug1:client_input_channel_req:チャネル0 rtype [email protected]応答1
debug3:パケットを送信:タイプ100
Linuxを再起動することで解決できるようですが、マシンを再起動するのが好きな人はいません。だから、私はssh-agentプロセスを終了して再起動しようとしています。
しかし、プロセスはkill後は常にdefunct
であり、その後ssh経由でgitをまったく使用できません。そのため、ssh-agentを再起動する方法、またはマシンを再起動せずに上記の問題を解決する方法はありますか?
@ Update
私が使用するsshキーには、最初にsshキーを使用するときに入力するキーフレーズが含まれています。
この問題は通常、Linuxデスクトップをスリープ状態から戻した後に発生するため、ネットワークが再接続されますが、これが重要かどうかは不明です。
繰り返しますが、defunct
にせずにssh-agent
エージェントを強制終了または再起動する方法を知っている人はいますか?
次の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
親プロセスがまだ監視しているため、defunct
が表示されているため、プロセステーブルから削除されていません。それは大したことではありません、プロセスは殺されます。新しいssh-agentを起動するだけです:
eval $(ssh-agent)
ssh-add