Postępowałem zgodnie z przewodnikiem po git, ale mam ten dziwny problem podczas próby połączenia z github:
$ ssh -v [email protected]
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Documents and Settings/mugues/.ssh/config
debug1: Applying options for github.com
debug1: Connecting to github.com [207.97.227.239] port 22.
debug1: connect to address 207.97.227.239 port 22: Attempt to connect timed out without establishing a connection
ssh: connect to host github.com port 22: Bad file number
To jest mój plik konfiguracyjny w .ssh
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile "C:\Documents and Settings\mugues\.ssh\id_rsa"
TCPKeepAlive yes
IdentitiesOnly yes
Dowolny pomysł?
Odpowiedzi:
Po tym, jak sam miałem ten problem, znalazłem rozwiązanie, które działa dla mnie:
Komunikat o błędzie:
Komunikat o złym numerze pliku będzie widoczny tylko w systemie Windows używającym powłoki MINGGW. Użytkownicy Linuksa zostaną po prostu przekroczeni.
Problem:
SSH jest prawdopodobnie zablokowane na porcie 22. Możesz to zobaczyć wpisując
Jak widać stan jest filtrowany, co oznacza, że coś go blokuje. Możesz rozwiązać ten problem, wykonując SSH na porcie 443 (twój firewall / ISP tego nie zablokuje). Ważne jest również, aby ssh kierować na „ssh.github.com” zamiast na github.com. W przeciwnym razie zgłosisz się do serwera WWW zamiast do serwera ssh. Poniżej znajdują się wszystkie kroki potrzebne do rozwiązania tego problemu.
Rozwiązanie:
(Przede wszystkim upewnij się, że wygenerowałeś klucze, jak wyjaśniono na http://help.github.com/win-set-up-git/ )
utwórz plik ~ / .ssh / config (plik konfiguracyjny ssh znajduje się w katalogu użytkownika. W systemie Windows prawdopodobnie
%USERPROFILE%\.ssh\config
Wklej w nim następujący kod:
Zapisz plik.
Wykonaj ssh jak zwykle:
Pamiętaj, że nie muszę podawać nazwy użytkownika ani numeru portu.
źródło
ssh: connect to host ssh.github.com port 443: Bad file number
.ssh/config
pliku w systemie Windows 7, upewnij się, że masz User-Enviromental VarHOME
z%USERPROFILE%
wartością -> pomogło mi, kiedy mój ssh nie mógł go znaleźćKluczowe informacje są zapisane w odpowiedzi @ Sama, ale niezbyt istotne, więc wyjaśnijmy to jasno.
„Zły numer pliku” nie jest informacyjny, jest jedynie oznaką uruchomienia ssh git w systemie Windows.
Linia, która pojawia się nawet bez
-v
przełącznika:jest właściwie nieistotna .
Jeśli się na tym skupisz, stracisz czas, ponieważ nie jest to wskazówka na temat tego, na czym polega problem, a jedynie efekt uruchomienia ssh git w systemie Windows. Nie jest to nawet znak, że instalacja lub konfiguracja git lub ssh jest nieprawidłowa. Naprawdę, zignoruj to .
To samo polecenie w systemie Linux wygenerowało zamiast tego tę wiadomość dla mnie, która dała rzeczywistą wskazówkę dotyczącą problemu:
Rzeczywiste rozwiązanie: zignoruj „zły numer pliku” i uzyskaj więcej informacji
Skoncentruj się na dodawanych liniach za pomocą
-v
linii poleceń. W moim przypadku było to:Moim problemem była literówka w adresie IP, ale Twój może być inny.
Czy to pytanie dotyczy „złego numeru pliku”, czy wielu powodów, dla których połączenie może przekroczyć limit czasu?
Jeśli ktoś może udowodnić, że „zły numer pliku” pojawia się tylko wtedy, gdy rzeczywistą przyczyną jest „przekroczenie limitu czasu połączenia”, warto zastanowić się, dlaczego połączenie może przekroczyć limit czasu.
Do tego czasu „zły numer pliku” jest tylko ogólnym komunikatem o błędzie, a pełną odpowiedź na to pytanie można uzyskać, mówiąc „zignoruj go i poszukaj innych komunikatów o błędach”.
EDYCJA: Qwertie wspomniał, że komunikat o błędzie jest rzeczywiście ogólny, ponieważ może się również zdarzyć w przypadku „Odmowa połączenia”. Potwierdza to analizę.
Proszę nie zaśmiecać tego pytania ogólnymi wskazówkami i odpowiedzią, nie mają one nic wspólnego z faktycznym tematem (i tytułem) tego pytania, czyli „Błąd Git SSH:„ Połącz z hostem: zły numer pliku ””. Jeśli korzystasz
-v
z bardziej pouczającej wiadomości, która zasługuje na własne pytanie, otwórz kolejne pytanie, a następnie możesz utworzyć do niego link.źródło
scp
wiersza poleceń dodało „debug1: połącz się z adresem 216.34.181.70 port 22: Odmowa połączenia” przed „Zły numer pliku”, więc nie zawsze jest to błąd „przekroczony limit czasu”.To zadziałało dla mnie:
źródło
Być może twoja zapora sieciowa lub aplikacja blokująca (PeerBlock itp.) Blokuje twój port
źródło
Możesz także spróbować:
aby sprawdzić, czy masz łączność z serwerem. Widziałem tę wiadomość i okazało się, że VPN, na którym byłem, blokował dostęp. Odłączono od VPN i byłem gotowy.
źródło
Odkryłem, że dzieje się tak, gdy połączenie jest słabe. Miałem to kilka minut temu, kiedy pchałem do mojego repozytorium, ciągle zawodziło, a chwilę później połączenie zostało przerwane.
Po tym, jak wrócił, pchnięcie natychmiast przeszło.
Uważam, że może to być spowodowane spadkiem połączenia z Twojej lub ich strony.
źródło
bad file number
pojawia się błąd, gdy połączenie znika.Jeśli SSH jest zablokowane powyżej 22
po prostu zaktualizuj
origin
do httpsgit remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git
sprawdź, czy wprowadzono zmiany
git remote -v
źródło
Po prostu miałem ten sam problem i próbowałem każdego rozwiązania, które mogłem znaleźć, ale żadne nie działało. Ostatecznie spróbowałem wyjść z Git Bash i ponownie go otworzyć i wszystko działało idealnie.
Więc spróbuj zamknąć Git Bash i ponownie go otworzyć.
źródło
Spróbuj zamknąć instancję git bash, za pośrednictwem której dokonałeś konfiguracji, i spróbuj ponownie. W końcu to zadziałało.
źródło
W systemie Windows próbowałem wyjść z git bash i uruchomić ponownie, ale nie zadziałało, w końcu ja (sfrustrowany) uruchomiłem ponownie i zadziałało następnym razem :)
źródło
Dokładnie sprawdź, czy opublikowałeś swoje klucze publiczne za pośrednictwem interfejsu administracyjnego GitHub.
Następnie upewnij się, że port 22 nie jest w jakiś sposób zablokowany (jak pokazano w tym pytaniu )
źródło
W moim przypadku zmienił się adres IP naszego hosta git.
Po prostu opróżnienie pamięci podręcznej DNS rozwiązało problem.
źródło
Utworzenie pliku konfiguracyjnego do korzystania z portu 443 nie zadziałało. W końcu spróbowałem wyłączyć połączenie Wi-Fi, włączyć je ponownie i problem zniknął. Dziwne. Głupie rozwiązanie, ale może komuś pomóc :)
źródło
Sprawdź pilota za pomocą git remote -v Coś jak ssh: /// gituser @ myhost: /git/dev.git
jest błędny z powodu potrójnego ukośnika ///
źródło
Widziałem ten problem podczas uzyskiwania dostępu do Bitbucket w sieci firmowej, podczas gdy git działa dobrze w sieci domowej.
Aby obejść ten problem, użyłem protokołu https.
Użyj odpowiednich słów, aby zastąpić „myaccount” i „myrepo”.
źródło
Poniższe rozwiązanie zadziałało, gdy próbowałem połączyć się przez SSH z wystąpieniem AWS EC2 Ubuntu z mojego komputera z systemem Windows 7 (32-bitowym) za korporacyjną zaporą ogniową, konfigurując serwer proxy.
Dodaj następujący blok do
C:\Users\<YOUR_WINDOWS_USER>\.ssh\config
plikuBędziesz musiał dodać podobną konfigurację dla każdego hosta, do którego chcesz SSH.
źródło
Miałem problem, gdy miałem otwarte połączenie FileZilla w systemie Windows. Zamknięta FileZilla -> Problem rozwiązany.
źródło
Jest to proste rozwiązanie pozwalające zaoszczędzić trochę pisania. Możesz łatwo wykonać następujące kroki w git bash.
(1) utwórz zdalne repozytorium
Uwaga: jeśli Twoje hasło zawiera znak „@”, użyj zamiast tego „% 40”
(2) Następnie zrób co chcesz ze zdalnym repozytorium
źródło
W moim przypadku pomogło po prostu ponowne uruchomienie routera WiFi.
źródło