web-dev-qa-db-fra.com

Git- Comment tuer correctement ssh-agent sous Linux

J'utilise git sur linux, lorsque je pousse vers gitlab, parfois il est bloqué sur:

debug1: Connexion au port 22 de gitlab.com [52.167.219.168].

ou

debug1: client_input_channel_req: canal 0 rtype [email protected] réponse 1

debug3: envoyer un paquet: type 100

Il semble que redémarrer Linux puisse le résoudre, mais aucun organisme n'aime redémarrer les machines. Donc, j'essaie de tuer le processus ssh-agent, puis de le redémarrer.

Mais le processus est toujours defunct après kill, et alors je ne peux pas utiliser git via ssh du tout, donc y a-t-il un moyen de redémarrer l'agent ssh, ou de résoudre le problème décrit ci-dessus sans redémarrer la machine?


@ Mise à jour

Les clés ssh que j'utilise incluent une phrase clé que j'entrerais lors de la première utilisation d'une clé ssh.

Le problème se produit généralement après que je ramène le bureau Linux en veille, donc le réseau est reconnecté, vous ne savez pas si cela importe?

Encore une fois, est-ce que quelqu'un sait comment tuer ou redémarrer un ssh-agent agent, sans le faire devenir defunct?

7
Eric Wang

Vous pouvez essayer ce script bash pour terminer l'agent 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
3
danglingpointer

Il affiche defunct probablement parce que son processus parent le surveille toujours, il n'est donc pas supprimé de la table de processus. Ce n'est pas grave, le processus est tué. Lancez simplement un nouvel agent ssh:

eval $(ssh-agent)

ssh-add
0
wisbucky