Bei der Verwendung von GIT habe ich Probleme mit der Verwendung von GIT über SSH , und da es sowohl von der Arbeit als auch von zu Hause mit einem anderen Modem aus einwandfrei funktioniert, funktioniert offensichtlich mein Heimmodem. Ich habe keine Probleme mit der Verbindung über HTTP.
Ich gehe also davon aus, dass es sich um ein SSH-Problem handelt, bin aber kein Experte darin, es direkt zu verwenden. Gibt es einen Befehl, den ich ausführen kann, um eine "Test" -Verbindung einzurichten, und der mich genau darüber informiert, wann und wo das Problem auftritt?
So ziemlich all „größere“ Befehle (wie fetch
, clone
oder push
mit vielen Daten) von git
(auch bei der Ausführung mit -v
) nur „hängen“ in der Mitte des Remote - Verbindung ohne Hinweis darauf, warum sie aufgehört haben, so dass sie nicht von Nutzen .
Kann ich auf irgendeine Weise mehr Details darüber erfahren, was in der SSH-Verbindung geschieht?
quelle
GIT_SSH_COMMAND="ssh -v" git clone example
Ich kann die SSH-Version debuggen, sie wird nach derCloning into
Meldung gedruckt, schlägt jedoch bei fehlgit clone
. Nachdem ich es entferntGIT_SSH_COMMAND
habe, funktioniert es. Am Ende diente der Zweck.git -c core.sshCommand="ssh -vvv" pull
git config --global core.sshCommand "ssh -vvv" git clone example
Ich hatte ein ähnliches Problem. Zum Debuggen habe ich eine Zeile in meine ssh_config eingefügt. So habe ich es gemacht:
Dort finden Sie eine Zeile wie diese:
In diesem Fall ist der Host
github.com
. Nun können Sie einen Host-Eintrag in Ihre SSH-Konfiguration einfügen:Und füge hinzu:
Wenn Sie Git-Operationen verwenden, sollten Sie jetzt viele Debug-Meldungen erhalten. Verwenden Sie, um weniger Debug-Meldungen zu erhalten
DEBUG1
Für GIT-Versionen> = 2.3.0 finden Sie in der Antwort von @Flimm eine intelligentere Lösung.
quelle
Lesen durch
man git
, gibt es einige nützliche Umgebungsvariablen Sie festlegen können,GIT_TRACE_PACKET
undGIT_TRACE
. Zum Beispiel:Ein bisschen zu spät zum Spiel, aber hoffentlich hilft das jemandem!
quelle
Per
man ssh
:Also versuchen Sie es
ssh -v
. Wenn Sie dadurch nicht wissen, was Sie wissen müssen, können Sie ein oder zweiv
Sekunden hinzufügen, um noch detailliertere Debugging-Informationen zu erhalten. Versuchen Sie es insbesondere für Githubssh -vvvT [email protected]
.Nach meiner Erfahrung kommt es normalerweise zu einer SSH-Sitzung, die während des Setups hängt, wenn der Client die ausgewählte Authentifizierungsmethode nicht ausführen kann. Stellen Sie sicher, dass sich Ihr privater Schlüssel am richtigen Ort mit den richtigen Berechtigungen befindet und mit dem öffentlichen Schlüssel übereinstimmt, den Sie Github gegeben haben.
quelle
push
/pull
im Repo ohne Probleme. Aber oft "hängt" es nur in der Mitte des Befehls und wird nicht fortgesetzt (insbesondere, wenn ich große Datenmengen, wie z. B. ein großesclone
oder ein großes, übertragepush
). Es gibt keine Fehlermeldungen, es sitzt nur da und geht nicht weiter.Ich sehe keine Möglichkeit, git (1) den externen Befehl mitzuteilen, der für ssh (1) verwendet werden soll, aber als Problemumgehung benenne einfach / path / to / ssh in /path/to/ssh.orig um und erstelle eine Shell Skript-Wrapper / path / to / ssh und füge die -v Flags hinzu:
Ich erhalte eine ausführliche Ausgabe, wenn ich Git-Befehle ausführe, die über einen ssh-Transport ausgeführt werden. Löschen Sie nach dem Debuggen das Skript und stellen Sie /path/to/ssh.orig in / path / to / ssh wieder her.
quelle
/usr/bin
Betracht, das Wrapper-Skript einzufügen, anstatt Dateien zu verschieben/usr/local/bin
.GIT_SSH
so eingestellt werden, dass sie auf die Binärdatei verweist, die Git verwenden soll.