Git SSH error: "Соединиться с хостом: неверный номер файла"
Я следовал руководству по 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 ответов
После этой проблемы я сам нашел для себя рабочее решение.
Сообщение об ошибке:
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 просто получат Timed out.
Проблема:
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, расположенный в вашем пользовательском каталоге. На Windows, вероятно, %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 :))
Обратите внимание, что мне не нужно указывать имя пользователя или номер порта.
Ключевая информация написана в ответе @Sam, но не очень заметна, так что давайте проясним это.
"Плохой номер файла" не информативен, это всего лишь признак запуска git ssh в Windows.
Строка, которая появляется даже без -v
переключатель:
ssh: connect to host (some host or IP address) port 22: Bad file number
на самом деле не имеет значения.
Если вы сосредоточитесь на этом, вы потратите время впустую, так как это не подсказка о том, что является настоящей проблемой, а просто эффект запуска git ssh на Windows. Это даже не признак неправильной установки или конфигурации 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:" Соединиться с хостом: неверный номер файла "". При использовании -v
у вас есть более информативное сообщение, которое заслуживает своего собственного вопроса, затем откройте другой вопрос, после чего вы сможете сделать ссылку на него.
Вы также можете попробовать:
telnet example.com 22
чтобы увидеть, если у вас есть подключение к серверу. Я увидел это сообщение, и в итоге оказалось, что VPN, на которой я работал, блокирует доступ. Отключил от ВПН и мне было хорошо идти.
Может быть, ваш брандмауэр или блокирующее приложение (PeerBlock и т. Д.) Блокирует ваш порт
Я обнаружил, что это происходит, когда ваше соединение плохое. У меня было это несколько минут назад, когда я нажимал на репо, оно продолжало давать сбой, и через некоторое время связь оборвалась.
После того, как это вернулось, толчок немедленно прошел.
Я полагаю, что это может быть вызвано либо обрывом связи с вашей или их стороны.
Если SSH заблокирован более 22
просто обнови свой origin
в https
git remote set-url origin https://github.com/ACCOUNT_NAME/REPO_NAME.git
убедитесь, что были внесены изменения
git remote -v
Попробуйте выйти из экземпляра git bash, через который вы выполнили настройку, и попробуйте снова открыть. В конечном итоге это сработало для меня.
У меня была та же проблема, и я пытался найти любое решение, которое смог найти, но ни одно не помогло. В конце концов я попытался выйти из Git Bash и снова открыть его, и все работало отлично.
Итак, попробуйте выйти из Git Bash и снова открыть его.
Дважды проверьте, что вы опубликовали свои открытые ключи через интерфейс администрирования GitHub.
Затем убедитесь, что порт 22 как-то не заблокирован (как показано в этом вопросе)
В моем случае IP-адрес нашего хоста git изменился.
Простая очистка кеша DNS устранила проблему.
В Windows я попытался выйти из git bash и перезапустить, но ничего не получилось, в конце концов я (frustated) перезапустился, и это сработало в следующий раз:)
Проверьте ваш пульт с помощью git remote -v Что-то вроде ssh:///gituser@myhost:/git/dev.git
неправильно из-за тройной косой черты ///
Следующее решение сработало для меня, когда я попытался подключиться к SSH к экземпляру AWS EC2 Ubuntu с моего компьютера с Windows 7 (32-разрядная версия) за корпоративным брандмауэром, настроив прокси-сервер.
Добавьте следующий блок в C:\Users\<YOUR_WINDOWS_USER>\.ssh\config
файл-
> 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>
Вам нужно будет добавить аналогичную конфигурацию для каждого хоста, в который вы хотите использовать SSH.
Создание файла конфигурации для использования порта 443 не работает для меня. Наконец я попытался отключить соединение Wi-Fi, включить его снова, и проблема исчезла. Weird. Глупое решение, но оно может кому-то помочь:)
Я видел эту проблему при доступе к bitbucket в корпоративной сети, в то время как git отлично работает в домашней сети.
$ git pull
ssh: connect to host bitbucket.org port 22: Bad file number
fatal: Could not read from remote repository.
Я использовал протокол https, чтобы обойти это.
$ git pull https://myaccount@bitbucket.org/myaccount/myrepo.git
Password for 'https://myaccount@bitbucket.org':
Пожалуйста, используйте соответствующие слова, чтобы заменить "myaccount" и "myrepo".
Это простое решение для сохранения набора текста, вы можете легко использовать следующие шаги в git bash:
(1) создать удаленный репозиторий
git remote add origin https://{your_username}:{your_password}@github.com/{your_username}/repo.git
Примечание. Если ваш пароль содержит знак "@", вместо этого используйте "%40".
(2) Затем делайте все, что вы хотите с удаленным хранилищем
ex:- git push origin master
У меня была проблема, когда у меня было открытое FileZilla-Connection в Windows. Закрыто FileZilla -> Проблема решена.