ssh: połącz się z hostem github.com port 22: przekroczono limit czasu połączenia

174

Jestem pod proxy i od dłuższego czasu naciskam, aby pomyślnie przejść.
Teraz nie jestem w stanie nagle wejść do gita.
Ustawiłem klucz RSA i proxy i dwukrotnie je sprawdziłem, bez skutku i git wyrzuca mi błąd pokazany w tytule strony.

Vihari Piratla
źródło
6
Utwórz hotspot na swoim urządzeniu mobilnym, połącz się za pomocą urządzenia mobilnego, a następnie git push. Pracował dla mnie.
zundi
1
Ten sam problem spotkał mnie w Wielkiej Brytanii z Virgin Media. Próbowałem push / pull do GitHub przez ssh w domu i bez powodzenia, ale w pracy było dobrze. Więc zdałem sobie sprawę, że mam problemy z moim ISP. Prostą poprawką dla mnie było użycie Cloudflare DNS 1.1.1.1zamiast domyślnego, dlatego @zundi odnosi sukcesy przez mobilny hotspot.
Vladyslav Krylasov

Odpowiedzi:

254

Przyczyną może być modyfikacja zapory sieciowej, ponieważ jesteś w sieci (w takim przypadku mogą one celowo blokować niektóre porty)
Aby dokładnie sprawdzić, czy to jest powód ... zrób

ssh -T [email protected]

to powinno przekroczyć limit czasu. Jeśli tak jest, użyj protokołu http zamiast ssh w ten sposób
po prostu zmień swój adres URL w pliku konfiguracyjnym na http.
Oto jak :-

git config --local -e

zmień wpis

 url = [email protected]:username/repo.git

do

url = https://github.com/username/repo.git
Vihari Piratla
źródło
6
Miałem ten problem raz, ale ponowne uruchomienie komputera rozwiązało go.
Kevin Lee,
3
fatal: nie można uzyskać dostępu do „ gitlab.com : ******. git /”: numer portu zakończył się na „f”
Fakher
Musiałem usunąć .git z adresu URL, aby to zadziałało. url = github.com/username/repo
Jesse Buss
4
używanie https zamiast ssh nie jest właściwym rozwiązaniem. Aby rozwiązać ten problem, musi istnieć sposób ustawienia proxy w konfiguracji git i ustawieniach ssh.
shijin
6
Virgin Media UK ma tryb awaryjny dla dzieci, który musiałem wyłączyć.
Finlay Percy
178

W moim przypadku żadne z sugerowanych rozwiązań nie zadziałało, więc próbowałem to naprawić samodzielnie i udało mi się to rozwiązać.

U mnie pojawia się ten błąd na mojej instancji AWS EC2 UBUNTU, co zrobiłem, aby go rozwiązać, to edycja konfiguracji ssh (lub dodanie jej, jeśli nie istnieje).

sudo nano ~/.ssh/config

I dodałem co następuje

Host github.com
 Hostname ssh.github.com
 Port 443

Następnie uruchom polecenie, ssh -T [email protected]aby potwierdzić, czy problem został rozwiązany.

Zgodnie z tym

Czasami zapory całkowicie odmawiają zezwolenia na połączenia SSH. Jeśli używanie klonowania HTTPS z buforowaniem poświadczeń nie jest możliwe, możesz spróbować sklonować za pomocą połączenia SSH przez port HTTPS. Większość reguł zapory powinna na to zezwalać, ale serwery proxy mogą przeszkadzać

Mam nadzieję, że pomoże to każdemu, kto ma ten sam problem, co ja.

Mahan_F
źródło
3
To rozwiązanie działało dobrze, chociaż nie rozwiązało problemu dla GitLab. W takim przypadku proszę wziąć pod uwagę, że GitLab.com uruchamia drugi serwer SSH, który nasłuchuje na powszechnie używanym porcie 443, który jest mało prawdopodobne, aby był zaporą ogniową. Wszystko, co musisz zrobić, to edytować ~/.ssh/configi zmienić sposób łączenia się z GitLab.com. W takim razie zobacz ten artykuł: about.gitlab.com/2016/02/18/…
lucascavalcante
1
Cześć, miałem ten sam problem, mój router jest z NET i blokuje port 22. Ta konfiguracja zdecydowanie rozwiązała mój problem
Pedro Soares,
To nie jest gitkonfiguracja, ale sshkonfiguracja
GuyT
1
Po godzinach szukania odpowiedzi ... jesteś CHAMPEM, w każdym razie dlaczego musimy zmienić github.com na ssh.github.com? Nadal nie rozumiem
Robert Tirta
45

Podstawowe przepisywanie adresów URL

Git zapewnia sposób na przepisanie adresów URL przy użyciu git config. Po prostu wydaj następujące polecenie:

git config --global url."https://".insteadOf git://

Teraz, jakby za pomocą magii, wszystkie polecenia git będą zastępować git://tohttps://

źródło: git: // protokół zablokowany przez firmę, jak mogę to obejść?

Michaël P
źródło
1
Dzięki! Nasz był podczas kompilacji Jenkinsa, więc nie mogłem ręcznie edytować pliku git (nie mam danych logowania git do konta Jenkins) - więc było to bardzo przydatne.
Phil
1
To jest świetne. Dodałem aliasy git dla każdego z nich, aby łatwo się przełączać
lfender6445
17
Odnośnie GitHub, polecenie powinno być: git config --global url."https://github.com/".insteadOf [email protected]:. Zwróć uwagę na różnice: @staje się //i :staje /.
Frodon
20

wewnątrz folderu .ssh Utwórz plik „config”

Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Isaque Elcio
źródło
1
Zobacz odpowiedź Mahan_F, aby uzyskać szczegółowe wyjaśnienie, dlaczego tak się dzieje.
refaelio
1
To jedyna rzecz, która działała dla mnie w GitLab. Dzięki, Isaque!
awwsmm
5

Szybkie obejście: spróbuj przełączyć się do innej sieci

Doświadczyłem tego problemu podczas korzystania z hotspotu (połączenie 3 / 4G). Przełączenie na inne połączenie (Wi-Fi) rozwiązało problem, ale to tylko obejście - nie miałem szansy dotrzeć do sedna problemu, więc inne odpowiedzi mogą być bardziej interesujące, aby określić podstawowy problem

kip2
źródło
Przerzuciłem się z WiFi na 4G i zadziałało. Ja też nie rozumiem.
Adam Casey
4

Napotkałem ten sam problem i nie mogłem znaleźć działającego rozwiązania. Napotkałem ten problem podczas konfigurowania lokalnego serwera i git nie mógł połączyć się przez moją sieć proxy, ale moja stacja robocza mogła. To był wynik, kiedy uruchomiłem polecenie ssh -vT [email protected]

ubuntu@server:~$ ssh -vT [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

Próbowałem więc użyć połączenia SSH przez port HTTPS, edytując plik konfiguracyjny, ~/.ssh/configale bezskutecznie.

Host github.com
 Hostname ssh.github.com
 Port 443

Wreszcie znalazłem ten artykuł, który rozwiązał i ujawnił prawdziwy problem.

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

To jest mój plik konfiguracyjny i teraz git działa doskonale dzięki ssh!

Animesh Singh
źródło
3

Wykonać:

nc -v -z <git-repository> <port>

Twój wynik powinien wyglądać następująco:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

Jeśli dostaniesz:

connect to <git-repository> <port> (tcp) failed: Connection timed out

Musisz edytować swój plik ~ / .ssh / config. Dodaj coś takiego:

Host example.com
Port 1234
ameen
źródło
5
Nie jestem pewien, czy wszyscy będą ncinstalować. Co to ma być? Netcat czy coś?
Hack-R
2

Miałem ten sam problem, ale odpowiedź, którą znalazłem, była inna, pomyślałem, że ktoś może napotkać ten problem, więc oto moje rozwiązanie.

Miałem do białej listy adresów IP dla portu 2 22, 80, 443, i 9418:

  • 192.30.252.0/22

  • 185.199.108.0/22

W przypadku, gdy te adresy IP nie działają, może to być spowodowane zaktualizowaniem, najnowsze z nich można znaleźć na tej stronie .

Artur Grigio
źródło
0

Powyższa odpowiedź dała mi informacje potrzebne do rozwiązania tego problemu. W moim przypadku adres URL nieprawidłowo zaczynał się od ssh: ///

Aby sprawdzić, czy adres URL w konfiguracji git jest poprawny, otwórz plik konfiguracyjny git: -

git config --local -e

Sprawdź wpis adresu URL. NIE powinien mieć ssh: /// na początku.

Błędny wpis:

 url = ssh:///[email protected]:username/repo.git

Prawidłowy wpis:

 url = [email protected]:username/repo.git

Jeśli twój adres URL jest poprawny, następnym krokiem byłoby wypróbowanie powyższej odpowiedzi, która sugeruje zmianę protokołu na http.

Manda QoP
źródło
0

Kiedy przypadkowo przełączyłem się na sieć Wi-Fi dla gości , otrzymałem ten błąd. Musiałem wrócić do mojej domyślnej sieci Wi-Fi.

Ludder
źródło
0

Miałem ten problem przez 2 godziny i okazuje się, że usunąłem "s" z https i po prostu wykonaj:

git clone -b <branchName> http:<projecturl>

Naprawione.

aPurpleDev
źródło
Zamknij to pytanie, oznaczając je jako odpowiedź
Clément
0

PROBLEM: Krok do wygenerowania problemu: git clone [email protected]: sramachand71 / test.git po raz pierwszy w nowym laptopie BŁĄD ssh: połącz się z hostem github.com port 22: przekroczono limit czasu połączenia krytyczny: nie można odczytać ze zdalnego magazyn.

Upewnij się, że masz odpowiednie prawa dostępu i że repozytorium istnieje. ROZWIĄZANIE po raz pierwszy w systemie do klonowania musimy podać podwójne cudzysłowy dla polecenia clone. $ git clone "[email protected]: sramachand71 / test.git" napotykam ten problem w systemie nawet po tym, jak wszystko było poprawne, ale w końcu zauważyłem, że podwójny cudzysłów jest konieczny dla adresu URL "repository_url.git" dla pierwszego lub nowego użytkownika w systemie.

Shivaprasad R
źródło
0

Zmiana adresu URL repozytorium z ssh na https nie ma dla mnie większego znaczenia. Ponieważ wolę to zrobić sshz httpspowodu jakichś dodatkowych korzyści, których nie chcę odrzucić. Powyższe odpowiedzi są całkiem dobre i dokładne. Jeśli napotkasz ten problem w GitLab, przejdź do oficjalnej strony dokumentacji i zmień swój plik konfiguracyjny w ten sposób.

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab
Md. Nowshad Hasan
źródło
0

Uruchom ponownie komputer rozwiązał to za mnie.
Wersja Git: 2.27.0.windows.1
Wersja systemu operacyjnego: Windows 10 v1909

Wenfang
źródło