Errore Git SSH: "Connetti all'host: numero file errato"


153

Ho seguito la guida di Git ma ho questo strano problema quando provo a connettermi a Github:

$ ssh -v git@github.com
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

Questo è il mio file di configurazione in .ssh

Host github.com
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile "C:\Documents and Settings\mugues\.ssh\id_rsa"
    TCPKeepAlive yes
    IdentitiesOnly yes

Qualche idea?


Capito oggi. E sembra che Github fosse a terra.
anno

TL; DR: ignora il "numero file errato". Le informazioni che stai cercando non si trovano in quel messaggio. Potrebbe significare qualsiasi cosa. Dettagli sulla stackoverflow.com/a/22788046
Stéphane Gourichon

Risposte:


186

Dopo aver riscontrato questo problema da solo, ho trovato una soluzione che funziona per me:

Messaggio di errore:

    ssh -v git@github.com
    OpenSSH_5.8p1, OpenSSL 1.0.0d 8 Feb 2011
    debug1: Connecting to github.com [207.97.227.239] port 22.
    debug1: connect to address 207.97.227.239 port 22: Connection timed out
    ssh: connect to host github.com port 22: Connection timed out
    ssh: connect to host github.com port 22: Bad file number

Vedrai il messaggio del numero di file errato solo su Windows usando la shell MINGGW. Gli utenti Linux avranno appena scaduto il timeout.

Problema:

SSH è probabilmente bloccato sulla porta 22. Puoi vederlo digitando

    $nmap -sS github.com -p 22
    Starting Nmap 5.35DC1 ( http://nmap.org ) at 2011-11-05 10:53 CET
    Nmap scan report for github.com (207.97.227.239)
    Host is up (0.10s latency).
    PORT   STATE    SERVICE
    22/tcp ***filtered*** ssh

    Nmap done: 1 IP address (1 host up) scanned in 2.63 seconds

Come puoi vedere, lo stato è Filtrato, il che significa che qualcosa lo sta bloccando. Puoi risolverlo eseguendo un SSH sulla porta 443 (il tuo firewall / isp non lo bloccherà). È anche importante che sia necessario inviare ssh a "ssh.github.com" anziché github.com. Altrimenti, riferirai al server web anziché al server ssh. Di seguito sono riportati tutti i passaggi necessari per risolvere questo problema.

Soluzione:

(Prima di tutto assicurati di aver generato le tue chiavi come spiegato su http://help.github.com/win-set-up-git/ )

creare il file ~ / .ssh / config (file di configurazione ssh situato nella directory dell'utente. Probabilmente su Windows %USERPROFILE%\.ssh\config

Incolla il seguente codice:

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

Salva il file.

Esegui ssh come al solito:

$ssh -T github.com 
    $Enter passphrase for key '.......... (you can smile now :))

Nota che non devo fornire il nome utente o il numero di porta.


4
In altre parole, si stabiliscono connessioni SSH sulla porta HTTPS .
Enrico Campidoglio,

1
Al "Incolla il seguente codice:", non capisco. Come posso supporre di risolvere un numero di file errato? Devo crearlo e salvarlo come file di blocco note?
David Dimalanta,

27
Invece ottengossh: connect to host ssh.github.com port 443: Bad file number
cqcn1991

Questo ha funzionato anche per bitbucket.org, quando la mia configurazione precedentemente funzionante improvvisamente ha smesso di funzionare. La parte migliore è che l'unica cosa che dovevo fare era apportare modifiche al file di configurazione SSH.
Kevin Condon,

2
Quando usi un .ssh/configfile su Windows 7, assicurati di avere un Var per l'ambiente HOMEcon %USERPROFILE%come valore -> mi ha aiutato, quando il mio SSH non è riuscito a trovarlo
Jook,

40

Le informazioni chiave sono scritte nella risposta di @ Sam ma non sono davvero salienti, quindi chiariamole.

"Numero file errato" non è informativo, è solo un segno dell'esecuzione di git ssh su Windows.

La linea che appare anche senza -vinterruttore:

ssh: connect to host (some host or IP address) port 22: Bad file number

è in realtà irrilevante .

Se ti concentri su di esso, perderai il tuo tempo in quanto non è un suggerimento su quale sia il vero problema, solo un effetto dell'esecuzione di git ssh su Windows. Non è nemmeno un segno che l'installazione o la configurazione di git o ssh sia errata. Davvero, ignoralo .

Lo stesso comando su Linux ha prodotto invece questo messaggio per me, che ha dato un vero suggerimento sul problema:

ssh: connect to host (some host or IP address) port 22: Connection timed out

Soluzione effettiva: ignora il "numero di file errato" e ottieni maggiori informazioni

Concentrarsi sulle linee aggiunte con -vsulla riga di comando. Nel mio caso era:

debug1: connect to address (some host or IP address) port 22: Attempt to connect timed out without establishing a connection

Il mio problema era un errore di battitura nell'indirizzo IP, ma il tuo potrebbe essere diverso.

Questa domanda riguarda il "numero di file errato" o le molte ragioni per cui una connessione potrebbe scadere?

Se qualcuno può dimostrare che il "numero di file errato" appare solo quando il vero motivo è "timeout della connessione", ha senso capire perché la connessione potrebbe andare in timeout.

Fino a quel momento, "numero file errato" è solo un messaggio di errore generico e questa domanda riceve una risposta completa dicendo "ignoralo e cerca altri messaggi di errore".

EDIT: Qwertie ha affermato che il messaggio di errore è effettivamente generico, come può accadere anche in "Connessione rifiutata". Ciò conferma l'analisi.

Si prega di non ingombrare questa domanda con suggerimenti e risposte generali, non hanno nulla a che fare con l'argomento reale (e il titolo) di questa domanda che è "Errore Git SSH:" Connetti all'host: Numero file errato "". Se si utilizza -vun messaggio più informativo che merita la propria domanda, quindi aprire un'altra domanda, quindi è possibile creare un collegamento ad esso.


1
Sì, aggiungendo -v alla mia scpriga di comando è stato aggiunto "debug1: connessione all'indirizzo 216.34.181.70 porta 22: Connessione rifiutata" prima di "Numero file errato", quindi non è sempre un errore "scaduto".
Qwertie,

Oh, Windows mostra sempre vaghi messaggi di errore, anche quando lo strumento è tradizionalmente usato su Linux e altri sistemi simili a UNIX ...
lilydjwg


5

Forse il tuo firewall o un'applicazione bloccante (PeerBlock ecc.) Sta bloccando la tua porta


5

Puoi anche provare a:

telnet example.com 22

per vedere se si dispone di connettività al server. Ho visto questo messaggio e si è scoperto che la VPN su cui stavo bloccando l'accesso. Disconnesso dalla VPN ed ero a posto.


4

Quello che ho scoperto è che ciò accade quando la tua connessione è scarsa. L'ho avuto pochi minuti fa quando ho spinto al mio repository, ha continuato a fallire e dopo un po ', la connessione è andata in fumo.

Dopo che è tornato su, la spinta ha subito subito.

Credo che possa essere causato da una caduta della connessione dalla tua parte o dalla loro.


1
Ottengo questo errore anche quando utilizzo Verizon Jetpack, che sembra perdere la mia connessione quando utilizzo ssh da due dispositivi separati. Quindi qualcosa nel Jetpack sta interrompendo la connessione e ottengo l' bad file numbererrore quando la connessione si interrompe.
cod3monk3y,

1
Ottengo questo errore quando utilizzo la connessione hotspot del mio telefono con il mio laptop.
Lucas Morgan,

@LucasMorgan stesso qui. Era quello che stavo usando quando è successo.
gelido

3

Se SSH è bloccato su 22

aggiorna il tuo originhttps

git remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git

verificare che siano state apportate modifiche

git remote -v


corretto, tuttavia dovrai farlo per ogni repository con questo metodo. In un file di configurazione viene applicato a livello globale.
Sam,

2

Ho avuto lo stesso problema e ho provato tutte le soluzioni che ho trovato, ma nessuna ha funzionato. Alla fine, ho provato a lasciare Git Bash e riaprirlo, e tutto ha funzionato perfettamente.

Quindi, prova a uscire da Git Bash e a riaprirlo.


2

Prova a uscire dall'istanza git bash attraverso la quale hai effettuato l'installazione e prova a riaprire. Alla fine ha funzionato per me.


10
" alla fine ha funzionato per me" mi fa pensare che potresti aver fatto altre cose nel processo che potrebbero aver contribuito.
Jake Berger,

1

Su Windows ho provato a uscire da Git Bash e rieseguirlo ma non ha funzionato, finalmente io (sfinito) ho fatto un riavvio e ha funzionato la prossima volta :)


1

Controlla di aver pubblicato le tue chiavi pubbliche attraverso l'interfaccia di amministrazione di GitHub.

Quindi assicurati che la porta 22 non sia in qualche modo bloccata (come illustrato in questa domanda )


1
>> Per prima cosa assicurati che 'git' sia il nome del tuo account utente GitHub. Come descritto nella guida git: testa tutto. Per assicurarti che tutto funzioni ora SSH su GitHub. Non modificare la parte "git@github.com". Dovrebbe essere lì. >> Quindi assicurati che la porta 22 non sia in qualche modo bloccata -> Ho disabilitato il firewall di Windows XP ma non è cambiato nulla.
Massimo Ugues,

1

Nel mio caso, l'indirizzo IP del nostro host git era cambiato.

Il semplice svuotamento della cache DNS ha risolto il problema.


0

La creazione del file di configurazione per utilizzare la porta 443 non ha funzionato per me. Alla fine ho provato a disattivare la mia connessione wifi, a riaccenderla e il problema è scomparso. Strano. Soluzione sciocca ma può aiutare qualcuno :)


0

Controlla il tuo telecomando con git remote -v Qualcosa come ssh: /// gituser @ myhost: /git/dev.git

è errato a causa della tripla /// barra


0

Ho riscontrato questo problema quando accedo a bitbucket nella rete aziendale, mentre git funziona bene nella rete domestica.

$ git pull
ssh: connect to host bitbucket.org port 22: Bad file number
fatal: Could not read from remote repository.

Ho usato il protocollo HTTPS per risolvere questo problema.

$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':

Utilizzare le parole corrispondenti per sostituire "mio account" e "miopre".


0

La seguente soluzione ha funzionato per me quando ho provato a SSH nell'istanza di Ubuntu AWS EC2 dal mio PC Windows 7 (32 bit) dietro il firewall aziendale che imposta Proxy-

Aggiungi il seguente blocco al C:\Users\<YOUR_WINDOWS_USER>\.ssh\configfile-

> Host *
>      ProxyCommand "C:/Program Files/Git/mingw32/bin/connect.exe" -H <YOUR_PROXY_SERVER_HOST>:<YOUR_PROXY_SERVER_PORT> %h %p
>      IdentityFile "<PATH_OF_YOUR_IDENTITY_FILE>"
>      TCPKeepAlive yes
>      IdentitiesOnly yes
>     
>     Host <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>
>      Port <SERVER_HOST_PORT_YOU_WANT_TO_SSH_INTO>
>      Hostname <SERVER_HOST_NAME_OR_IP_YOU_WANT_TO_SSH_INTO>

Sarà necessario aggiungere una configurazione simile per host in cui si desidera SSH.


-1

Ho avuto il problema quando avevo un FileZilla-Connection aperto su Windows. FileZilla chiuso -> Problema risolto.


-1

Questa è la semplice soluzione per salvare alcune battute a macchina, puoi usare facilmente i seguenti passi in git bash.

(1) creare il repository remoto

git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git

Nota: se la password contiene il segno '@', utilizzare '% 40' invece di quello

(2) Quindi fai tutto quello che vuoi con il repository remoto

ex:- git push origin master

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.