Erro Git SSH: "Conectar ao host: número de arquivo inválido"

153

Eu segui o guia git, mas tenho um problema estranho ao tentar me conectar ao 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

Este é o meu arquivo de configuração em .ssh

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

Qualquer ideia?

Massimo Ugues
fonte
Entendi hoje. E parece que o Github estava fora do ar.
ysrb
TL; DR: ignora "número de arquivo inválido". As informações que você está procurando não constam dessa mensagem. Isso pode significar qualquer coisa. Detalhes em stackoverflow.com/a/22788046
Stéphane Gourichon,

Respostas:

186

Depois de ter esse problema, encontrei uma solução que funciona para mim:

Mensagem de erro:

    ssh -v [email protected]
    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

Você verá apenas a mensagem de número de arquivo inválido quando estiver no Windows usando o shell MINGGW. Os usuários do Linux acabarão com o tempo limite.

Problema:

O SSH provavelmente está bloqueado na porta 22. Você pode ver isso 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

Como você pode ver, o estado está filtrado, o que significa que algo está bloqueando-o. Você pode resolver isso executando um SSH na porta 443 (seu firewall / isp não bloqueará isso). Também é importante que você precise ssh para "ssh.github.com" em vez de github.com. Caso contrário, você reportará ao servidor da web em vez do servidor ssh. Abaixo estão todas as etapas necessárias para resolver esse problema.

Solução:

(Antes de tudo, verifique se você gerou suas chaves como explicado em http://help.github.com/win-set-up-git/ )

criar arquivo ~ / .ssh / config (arquivo de configuração ssh localizado no diretório do usuário. No Windows, provavelmente %USERPROFILE%\.ssh\config

Cole o seguinte código nele:

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

Salve o arquivo.

Execute ssh como de costume:

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

Observe que não preciso fornecer o nome de usuário ou o número da porta.

Sam
fonte
4
Em outras palavras, você estabelece conexões SSH pela porta HTTPS .
Enrico Campidoglio
1
No "Cole o seguinte código nele:", eu não entendo. Como devo resolver um número de arquivo incorreto? Devo criá-lo e salvar como arquivo de bloco de notas?
David Dimalanta 9/07/2013
27
I em vez de obterssh: connect to host ssh.github.com port 443: Bad file number
cqcn1991
Isso também funcionou para o bitbucket.org, quando minha configuração de trabalho anterior parou de funcionar de repente. A melhor parte é que a única coisa que tive que fazer foi fazer alterações no arquivo de configuração SSH.
Kevin Condon
2
Ao usar um .ssh/configarquivo no Windows 7, verifique se você tem um User-Enviromental Var HOMEcom %USERPROFILE%como valor -> me ajudou, quando meu ssh não poderia encontrá-lo
Jook
40

As informações principais estão escritas na resposta de @ Sam, mas não são realmente salientes, então vamos deixar claro.

"Número de arquivo inválido" não é informativo, é apenas um sinal de execução do ssh do git no Windows.

A linha que aparece mesmo sem a -vchave:

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

é realmente irrelevante .

Se você se concentrar nisso, perderá seu tempo, pois não é uma dica sobre qual é o problema real, apenas um efeito da execução do git's ssh no Windows. Nem sequer é um sinal de que a instalação ou configuração do git ou ssh está errada. Realmente, ignore-o .

O mesmo comando no Linux produziu essa mensagem para mim, que deu uma dica real sobre o problema:

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

Solução real: ignore "número de arquivo incorreto" e obtenha mais informações

Concentre-se nas linhas que estão sendo adicionadas com -va linha de comando. No meu caso, foi:

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

Meu problema foi um erro de digitação no endereço IP, mas o seu pode ser diferente.

Esta é uma pergunta sobre "número de arquivo incorreto" ou sobre os vários motivos pelos quais uma conexão pode atingir o tempo limite?

Se alguém puder provar que "número de arquivo incorreto" só aparece quando o motivo real é "tempo limite da conexão", faz sentido abordar por que a conexão pode expirar.

Até isso, "número de arquivo incorreto" é apenas uma mensagem de erro genérica e esta pergunta é respondida completamente dizendo "ignore e procure outras mensagens de erro".

EDIT: Qwertie mencionou que a mensagem de erro é realmente genérica, pois também pode ocorrer em "Conexão recusada". Isso confirma a análise.

Por favor, não confunda esta pergunta com dicas e respostas gerais, elas não têm nada a ver com o tópico (e o título) real dessa pergunta, que é "Erro Git SSH:" Conecte-se ao host: número de arquivo inválido "". Se -vvocê estiver usando uma mensagem mais informativa que mereça a própria pergunta, abra outra pergunta e crie um link para ela.

Stéphane Gourichon
fonte
1
Sim, adicionar -v à minha scplinha de comando adicionou "debug1: conectar ao endereço 216.34.181.70 porta 22: Conexão recusada" antes de "Número de arquivo inválido", portanto nem sempre é um erro de "tempo limite excedido".
Qwertie
Oh, o Windows sempre mostra mensagens de erro vagas, mesmo quando a ferramenta é tradicionalmente utilizado no Linux e outros UNIX-like sistemas ...
lilydjwg
5

Talvez seu firewall ou um aplicativo bloqueador (PeerBlock etc.) esteja bloqueando sua porta

Gerold Meisinger
fonte
5

Você também pode tentar:

telnet example.com 22

para ver se você possui conectividade com o servidor. Eu vi essa mensagem e acabou sendo a VPN em que eu estava bloqueando o acesso. Desconectado da VPN e eu estava pronto para ir.

Fostah
fonte
4

O que eu descobri é que isso acontece quando sua conexão é ruim. Há alguns minutos atrás, quando fui ao meu repo, ele continuava falhando e pouco tempo depois, a conexão caiu.

Depois que ele voltou, o impulso passou imediatamente.

Acredito que isso possa ser causado por uma queda na conexão do seu lado ou do deles.

frostymarvelous
fonte
1
Também recebo esse erro ao usar o Verizon Jetpack, que parece estar perdendo minha conexão quando estou usando o ssh em dois dispositivos separados. Então, algo no Jetpack está interrompendo a conexão e eu recebo o bad file numbererro quando a conexão cai.
Cod3monk3y
1
Eu recebo esse erro ao usar a conexão de ponto de acesso do meu telefone com meu laptop.
21715 Lucas
@LucasMorgan mesmo aqui. Era isso que eu estava usando quando isso aconteceu.
Frostymarvelous 8/03
3

Se o SSH estiver bloqueado acima de 22

basta atualizar seu originpara https

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

verifique se foram feitas alterações

git remote -v

marcenaria
fonte
correto, no entanto, você precisará fazer isso para cada repositório com esse método. Em um arquivo de configuração, é aplicado globalmente.
Sam
2

Eu apenas tive o mesmo problema e tentei todas as soluções que pude encontrar, mas nenhuma funcionou. Eventualmente, tentei sair do Git Bash e reabri-lo, e tudo funcionou perfeitamente.

Portanto, tente sair do Git Bash e reabri-lo.

Joe Lencioni
fonte
2

Tente sair da instância do git bash através da qual você fez a instalação e tente reabrir. Eventualmente funcionou para mim.

om39a
fonte
10
" eventualmente funcionou para mim" me faz pensar que você pode ter feito outras coisas no processo que podem ter contribuído.
Jake Berger
1

No windows, tentei sair do git bash e executar novamente, mas não funcionou. Finalmente, eu (com frustração) fiz uma reinicialização e funcionou da próxima vez :)

nischayn22
fonte
1

Verifique se você publicou suas chaves públicas por meio da interface de administração do GitHub.

Em seguida, verifique se a porta 22 não está de alguma forma bloqueada (como ilustrado nesta pergunta )

VonC
fonte
1
>> Primeiro, verifique se o 'git' é o nome da sua conta de usuário do GitHub. Conforme descrito no guia git: Teste tudo. Para garantir que tudo esteja funcionando, você agora vai usar o SSH no GitHub. Não altere a parte "[email protected]". Isso deveria estar lá. >> Certifique-se de que a porta 22 não esteja de algum modo bloqueada -> desativei o firewall do Windows XP, mas nada mudou.
Massimo Ugues 22/08/11
1

No meu caso, o endereço IP do nosso host git havia mudado.

Simplesmente liberar o cache DNS corrigiu o problema.

aboy021
fonte
0

Criar o arquivo de configuração para usar a porta 443 não funcionou para mim. Finalmente, tentei desligar minha conexão wifi, ligá-la novamente e o problema desapareceu. Esquisito. Solução boba, mas pode ajudar alguém :)

teleco
fonte
0

Verifique seu controle remoto com git remote -v Algo como ssh: /// gituser @ myhost: /git/dev.git

está errado por causa da barra tripla ///

daitangio
fonte
0

Eu vi esse problema ao acessar o bitbucket na rede corporativa, enquanto o git funciona bem na rede doméstica.

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

Eu usei o protocolo https para solucionar isso.

$ git pull https://[email protected]/myaccount/myrepo.git
Password for 'https://[email protected]':

Por favor, use as palavras correspondentes para substituir "myaccount" e "myrepo".

ywu
fonte
0

A solução a seguir funcionou para mim quando tentei fazer o SSH na instância do AWS EC2 Ubuntu no meu PC com Windows 7 (32 bits) por trás do firewall corporativo que configura o Proxy-

Adicione o seguinte bloco ao C:\Users\<YOUR_WINDOWS_USER>\.ssh\configarquivo

> 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>

Você precisará adicionar uma configuração semelhante por host em que deseja fazer o SSH.

KunalP
fonte
-1

Tive o problema quando tive uma conexão FileZilla aberta no Windows. FileZilla fechado -> Problema resolvido.

Raphi
fonte
-1

Esta é a solução simples para salvar algumas digitações. Você pode seguir as etapas a seguir no git bash facilmente.

(1) crie o repositório remoto

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

Nota: Se sua senha contiver o sinal '@', use '% 40' em vez daquele

(2) Faça o que quiser com o repositório remoto

ex:- git push origin master
tharakaucsc
fonte
-2

No meu caso, simplesmente reiniciar o roteador WiFi ajudou.

Vijay Mali
fonte