Une manière vraiment verbeuse de tester la connexion Git via SSH?

64

Lors de l'utilisation de GIT, j'ai des problèmes liés à l'utilisation de GIT sur SSH , Et comme cela fonctionne très bien à la fois du travail et à la maison avec un modem différent, c'est évidemment mon modem domestique qui fonctionne. Je n'ai aucun problème à me connecter via HTTP.

Donc, je suppose que c'est un problème SSH, mais je ne suis pas un expert pour l'utiliser directement. Existe-t-il une commande que je peux exécuter qui configure une connexion "test", et me permet de savoir exactement quand et où le problème est survenu?

Presque toutes les commandes "plus grandes" (telles que fetch , clone ou push avec beaucoup de données) de git (même si elles sont exécutées avec -v ) se "bloquent" au milieu de connexion à distance sans indication de la raison pour laquelle ils se sont arrêtés, ils ne sont donc d'aucune utilité.

Y a-t-il un moyen d'obtenir plus de détails sur ce qui se passe dans la connexion SSH?

    
posée IQAndreas 25.08.2013 - 04:40
la source

5 réponses

67

J'ai eu un problème similaire. Pour le débogage, j'ai ajouté une ligne dans mon ssh_config. Voici comment je l'ai fait:

git remote -v

Là vous trouverez une ligne comme celle-ci:

origin  [email protected]:me/test.git (fetch)
origin  [email protected]:me/test.git (push)

Dans ce cas, l’hôte est github.com . Maintenant, vous pouvez ajouter une entrée hôte dans votre configuration ssh:

vim ~/.ssh/config

Et ajoutez:

Host github.com
    LogLevel DEBUG3

En utilisant les opérations git, vous devriez recevoir beaucoup de messages de débogage, maintenant. Pour obtenir des messages de débogage moindres, essayez d'utiliser DEBUG1

Pour les versions GIT & gt; = 2.3.0 , consultez la réponse de @Flimm pour une solution plus intelligente.

    
réponse donnée Trendfischer 27.10.2014 - 13:52
la source
61

Variable d'environnement

A partir de la version 2.3.0 de Git, vous pouvez utiliser la variable d'environnement GIT_SSH_COMMAND et transmettre l'argument -v verbose comme ceci:

GIT_SSH_COMMAND="ssh -v" git clone example

Pour être plus prolixe, rendez-le -vvv :

GIT_SSH_COMMAND="ssh -vvv" git clone example

Git config

A partir de la version 2.1.0.0 de Git, qui sera placée dans les dépôts d'Ubuntu 17.04, vous pouvez enregistrer cette configuration globalement ou par dépôt, comme dans cet exemple:

git config core.sshCommand "ssh -vvv"
git pull
    
réponse donnée Flimm 08.05.2015 - 11:44
la source
14

En parcourant man git , vous pouvez définir certaines variables d'environnement utiles, GIT_TRACE_PACKET et GIT_TRACE . Par exemple:

GIT_TRACE_PACKET=true git clone ssh://[...]

Un peu tard pour le jeu, mais j'espère que cela aidera quelqu'un!

    
réponse donnée bcherny 02.11.2014 - 20:42
la source
5

Par man ssh :

 -v      Verbose mode.  Causes ssh to print debugging messages about its progress.  This
         is helpful in debugging connection, authentication, and configuration problems.
         Multiple -v options increase the verbosity.  The maximum is 3.

Essayez donc ssh -v . Si cela ne vous dit pas ce que vous devez savoir, vous pouvez ajouter un ou deux v s pour des informations de débogage encore plus détaillées. Pour Github en particulier, essayez ssh -vvvT [email protected] .

Habituellement, selon mon expérience, une session SSH interrompue lors de l’installation se produit lorsque le client ne peut pas terminer la méthode d’authentification choisie. Vérifiez que votre clé privée est au bon endroit avec les autorisations appropriées et correspond à la clé publique à laquelle vous avez donné Github.

    
réponse donnée tgies 25.08.2013 - 06:31
la source
3

Je ne vois pas de moyen de dire à git (1) la commande externe à utiliser pour ssh (1), mais pour contourner ce problème, renommez simplement / path / to / ssh en /path/to/ssh.orig, créer un script shell wrapper / path / to / ssh et ajouter les options -v:

$ sudo mv /usr/bin/ssh /usr/bin/ssh.orig
$ sudo vim /usr/bin/ssh
$ cat /usr/bin/ssh
#!/bin/sh

if [ -x /usr/bin/ssh.orig ]; then
    exec /usr/bin/ssh.orig -v -v -v "${@}"
fi

$ sudo chmod a+x /usr/bin/ssh

J'obtiens une sortie prolixe lors de l'exécution de commandes git sur un transport ssh. Une fois le débogage terminé, supprimez le script et restaurez /path/to/ssh.orig dans / path / to / ssh.

    
réponse donnée ScoobiFreeBSD 23.10.2014 - 19:04
la source

Lire d'autres questions sur les étiquettes