Git SSH error: «Соединиться с хостом: неверный номер файла» - PullRequest
153 голосов
/ 22 августа 2011

Я следовал инструкции git , но у меня возникает странная проблема при попытке подключиться к 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

Это мой конфигурационный файл под .ssh

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

Есть идеи?

Ответы [ 19 ]

186 голосов
/ 05 ноября 2011

После этой проблемы я сам нашел решение, которое работает для меня:

Сообщение об ошибке:

    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

Вы увидите сообщение о неверном номере файла только в Windows, используя оболочку MINGGW. Пользователи Linux просто получат тайм-аут.

Проблема:

SSH, вероятно, заблокирован на порту 22. Вы можете увидеть это, набрав

    $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

Как видите, состояние Filtered, что означает, что что-то его блокирует. Вы можете решить эту проблему, выполнив SSH к порту 443 (ваш брандмауэр / isp не заблокирует это). Также важно, чтобы вам нужен ssh для «ssh.github.com» вместо github.com. В противном случае вы будете отправлять отчеты на веб-сервер, а не на сервер ssh. Ниже приведены все шаги, необходимые для решения этой проблемы.

Решение:

(Прежде всего убедитесь, что вы сгенерировали свои ключи, как описано в http://help.github.com/win-set-up-git/)

создать файл ~ / .ssh / config (файл конфигурации ssh, расположенный в вашем пользовательском каталоге. На окнах наверное %USERPROFILE%\.ssh\config

Вставьте в него следующий код:

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

Сохраните файл.

Выполните ssh как обычно:

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

Обратите внимание, что мне не нужно указывать имя пользователя или номер порта.

40 голосов
/ 01 апреля 2014

Ключевая информация написана в ответе @ Сэма, но не очень заметна, поэтому давайте проясним это.

«Плохой номер файла» не информативен, это всего лишь признак запуска git ssh в Windows.

Строка, которая появляется даже без ключа -v:

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

на самом деле не имеет значения .

Если вы сосредоточитесь на этом, вы напрасно потратите свое время, поскольку это не подсказка о том, что является реальной проблемой, а просто эффект запуска git ssh наОкна.Это даже не признак неправильной установки или конфигурации git или ssh.Действительно, игнорировать это .

Та же самая команда в Linux вместо этого создала для меня это сообщение, которое дало реальную подсказку о проблеме:

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

Фактическое решение: игнорировать «неверный номер файла» и получить больше информации

Сосредоточиться на добавляемых строках с -v в командной строке.В моем случае это было:

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

Моя проблема заключалась в опечатке в IP-адресе, но ваша проблема может быть другой.

Это вопрос о "неверном номере файла" или омного причин, по которым время ожидания соединения может истечь?

Если кто-то может доказать, что «неверный номер файла» появляется только тогда, когда действительной причиной является «время ожидания соединения», то имеет смысл рассмотреть причину истечения времени ожидания соединения.

До этого «неверный номер файла» был только общим сообщением об ошибке, и на этот вопрос был дан полный ответ: «игнорируйте его и ищите другие сообщения об ошибках».

РЕДАКТИРОВАТЬ: Qwertie упомянул, что сообщение об ошибке действительно является общим, как это может произойти и при "Отказ в соединении".Это подтверждает анализ.

Пожалуйста, не загромождайте этот вопрос общими подсказками и ответами, они не имеют ничего общего с реальной темой (и заголовком) этого вопроса, которая называется «Ошибка Git SSH:« Подключиться кhost: Bad file number ”".Если вы используете -v, у вас есть более информативное сообщение, которое заслуживает отдельного вопроса, а затем откройте другой вопрос, тогда вы можете сделать ссылку на него.

15 голосов
/ 27 мая 2012

Это сработало для меня:

ssh -v git@github.com -p 443
5 голосов
/ 07 июня 2013

Вы также можете попробовать:

telnet example.com 22

чтобы узнать, есть ли у вас подключение к серверу. Я увидел это сообщение, и в итоге VPN, на которой я был, блокировал доступ. Отключил от ВПН и мне было хорошо идти.

5 голосов
/ 28 августа 2012

Возможно, ваш брандмауэр или блокирующее приложение (PeerBlock и т. Д.) Блокирует ваш порт

4 голосов
/ 27 сентября 2011

Я обнаружил, что это происходит, когда ваше соединение плохое. У меня было это несколько минут назад, когда я нажимал на репо, оно продолжало давать сбой, и через некоторое время соединение оборвалось.

После того, как он вернулся, пуш немедленно прошел.

Я полагаю, это может быть вызвано либо обрывом связи с вашей стороны, либо с их стороны.

3 голосов
/ 24 октября 2014

Если SSH заблокирован в течение 22 * ​​1001 *

, просто обновите свой origin до https

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

и убедитесь, что были внесены изменения

git remote -v

2 голосов
/ 29 апреля 2012

Попробуйте выйти из экземпляра git bash, через который вы выполнили настройку, и попробуйте снова открыть.В конце концов это сработало для меня.

2 голосов
/ 27 февраля 2012

У меня была та же проблема, и я пытался найти любое решение, которое смог найти, но ни одно не помогло.В конце концов я попытался выйти из Git Bash и снова открыть его, и все заработало идеально.

Итак, попробуйте выйти из Git Bash и открыть его снова.

1 голос
/ 07 июня 2012

В Windows я пытался выйти из git bash и перезапустить, но ничего не получилось, в конце концов я (frustated) перезапустил компьютер, и в следующий раз все заработало

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...