Podczas korzystania z GIT mam problemy z używaniem GIT przez SSH , a ponieważ działa dobrze zarówno w pracy, jak iw domu z innym modemem, to oczywiście mój modem domowy działa. Nie mam problemów z połączeniem przez HTTP.
Zakładam, że jest to problem z SSH, ale nie jestem ekspertem w bezpośrednim korzystaniu z niego. Czy jest jakieś polecenie, które mogę uruchomić, które konfiguruje połączenie „testowe” i informuje mnie dokładnie, kiedy i gdzie wzdłuż linii występuje problem?
Prawie wszystkie „większe” polecenia (takie jak fetch
, clone
lub push
z dużą ilością danych) z git
(nawet gdy są uruchomione -v
) po prostu „zawieszają się” w trakcie zdalnego łączenia się bez wskazania, dlaczego przestały, więc nie są przydatne .
Czy jest jakiś sposób, aby uzyskać więcej informacji na temat tego, co dzieje się w połączeniu SSH?
źródło
GIT_SSH_COMMAND="ssh -v" git clone example
mogę debugować wersję SSH, zostanie wydrukowana poCloning into
wiadomości, ale nie powiedzie sięgit clone
. Po usunięciuGIT_SSH_COMMAND
działa. W końcu służył celowi.git -c core.sshCommand="ssh -vvv" pull
git config --global core.sshCommand "ssh -vvv" git clone example
Miałem podobny problem. Do debugowania dodałem wiersz w moim ssh_config. Oto jak to zrobiłem:
Tam znajdziesz taką linię:
W tym przypadku hostem jest
github.com
. Teraz możesz dodać wpis hosta w swojej konfiguracji ssh:I dodaj:
Korzystając z operacji git, powinieneś teraz dostać dużo komunikatów debugowania. Aby uzyskać mniejsze komunikaty debugowania, spróbuj użyć
DEBUG1
W przypadku wersji GIT> = 2.3.0 zobacz odpowiedź od @Flimm na inteligentniejsze rozwiązanie.
źródło
Po przeczytaniu
man git
istnieje kilka przydatnych zmiennych środowiskowych, które można ustawić,GIT_TRACE_PACKET
iGIT_TRACE
. Na przykład:Trochę za późno na grę, ale mam nadzieję, że to komuś pomoże!
źródło
Za
man ssh
:Więc spróbuj
ssh -v
. Jeśli to nie mówi ci, co musisz wiedzieć, możesz dodać jeden lub dwa,v
aby uzyskać jeszcze bardziej szczegółowe informacje debugowania. W szczególności w przypadku Github spróbujssh -vvvT [email protected]
.Z mojego doświadczenia wynika, że zazwyczaj sesja SSH zawiesza się podczas instalacji, gdy klient nie może ukończyć wybranej metody uwierzytelniania. Sprawdź, czy Twój klucz prywatny znajduje się we właściwym miejscu z odpowiednimi uprawnieniami i czy pasuje do klucza publicznego, który podałeś Github.
źródło
push
/pull
w repozytorium bez problemów. Ale często po prostu „zawiesza się” w środku polecenia i nie kontynuuje (szczególnie, gdy przesyłam duże ilości danych, takie jak dużeclone
lubpush
). Nie ma komunikatów o błędach, po prostu tam siedzi i nie kontynuuje.Nie widzę sposobu, aby powiedzieć git (1) komendę zewnętrzną, która ma być użyta dla ssh (1), ale w celu obejścia tego problemu po prostu zmień nazwę / path / to / ssh na /path/to/ssh.orig, utwórz powłokę opakowanie skryptu / ścieżka / do / ssh i dodaj flagi -v:
Otrzymuję pełne dane wyjściowe podczas wykonywania poleceń git działających w transporcie ssh. Po zakończeniu debugowania usuń skrypt i przywróć /path/to/ssh.orig do / path / to / ssh.
źródło
/usr/bin
, rozważ umieszczenie skryptu opakowania/usr/local/bin
.GIT_SSH
można ustawić tak, aby wskazywała plik binarny, którego Git ma używać.