ssh: подключение к хосту github.com порт 22: истекло время ожидания соединения

174

Я нахожусь под управлением прокси-сервера, и я довольно долго добиваюсь успеха в git.
Теперь я не могу внезапно впасть в мерзавца.
Я установил ключ RSA и прокси и дважды проверил их, но безрезультатно, и git выдает ошибку, показанную в заголовке страницы.

Вихари Пиратла
источник
6
Создайте точку доступа на своем мобильном устройстве, затем подключитесь через мобильное устройство git push. Работал на меня.
Зунди
1
Та же самая проблема произошла со мной в Великобритании с Virgin Media. Я пытался толкать / тянуть к GitHub через ssh дома, но не повезло, но на работе все было в порядке. Поэтому я понял, что у меня проблемы с провайдером. Простым решением для меня было использование Cloudflare DNS 1.1.1.1вместо используемого по умолчанию, поэтому @zundi преуспевает благодаря мобильной точке доступа.
Владислав Крыласов

Ответы:

254

Причиной может быть изменение брандмауэра, поскольку вы находитесь в сети. (В этом случае они могут намеренно блокировать некоторые порты)
Чтобы дважды проверить, является ли это причиной ... сделать

ssh -T git@github.com

это должно истечь. Если это так, используйте протокол http вместо ssh,
просто измените ваш URL в файле конфигурации на http.
Вот как:

git config --local -e

изменить запись

 url = git@github.com:username/repo.git

в

url = https://github.com/username/repo.git
Вихари Пиратла
источник
6
Однажды у меня возникла эта проблема, но перезагрузка компьютера решила ее.
Кевин Ли
3
Неустранимый : невозможно получить доступ ' gitlab.com : ******. git /': номер порта закончился на «f»
Fakher
Я должен был удалить .git из URL, чтобы это работало на меня. url = github.com/username/repo
Джесси Бусс
4
использование https вместо ssh не является правильным решением. Должен быть способ установить прокси в git config и в настройках ssh, чтобы решить эту проблему.
Shijin
6
В Virgin Media UK есть безопасный для детей режим, который мне пришлось отключить.
Финли Перси
178

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

Для меня я получаю эту ошибку на своем экземпляре AWS EC2 UBUNTU, что я сделал, чтобы решить ее, чтобы отредактировать конфигурацию ssh (или добавить ее, если она не существует).

sudo nano ~/.ssh/config

И я добавил следующее

Host github.com
 Hostname ssh.github.com
 Port 443

Затем выполните команду, ssh -T git@github.comчтобы подтвердить, устранена ли проблема.

В соответствии с этому

Иногда брандмауэры отказываются разрешить SSH-соединения полностью. Если использование клонирования HTTPS с кэшированием учетных данных невозможно, вы можете попытаться клонировать, используя соединение SSH, установленное через порт HTTPS. Большинство правил брандмауэра должны позволять это, но прокси-серверы могут мешать

Надеюсь, это поможет всем, у кого возникла та же проблема, что и у меня.

Mahan_F
источник
3
Это решение хорошо сработало для меня, хотя и не решило проблему с GitLab. В этом случае, пожалуйста, учтите, что GitLab.com запускает второй SSH-сервер, который прослушивает обычно используемый порт 443, который вряд ли будет защищен брандмауэром. Все, что вам нужно сделать, это отредактировать ~/.ssh/configи изменить способ подключения к GitLab.com. В этом случае см. Эту статью: about.gitlab.com/2016/02/18/…
lucascavalcante
1
Привет, у меня была такая же проблема, мой маршрутизатор от NET, и он блокирует 22 порта. Этот
Педро Соареш
Не gitконфиг , но sshконфигурации
GuyT
1
После нескольких часов поиска ответов ... вы CHAMP, в любом случае, зачем нам менять github.com на ssh.github.com? Я до сих пор не понимаю
Роберт
45

Основная перезапись URL

Git предоставляет способ переписать URL с помощью git config. Просто введите следующую команду:

git config --global url."https://".insteadOf git://

Теперь, как по волшебству, все команды git будут выполнять замену git://наhttps://

source: git: // протокол заблокирован компанией, как мне обойти это?

Михаэль П
источник
1
Спасибо! Наш был во время сборки Jenkins, поэтому я не мог вручную редактировать файл git (у меня нет учетных данных git для учетной записи jenkins) - так что это было очень полезно.
Фил
1
Это круто. Я добавил псевдонимы git для каждого, чтобы легко переключаться
lfender6445
17
Что касается GitHub, команда должна быть: git config --global url."https://github.com/".insteadOf git@github.com:. Обратите внимание на различия: @становится //и :становится /.
Фродон
20

внутри папки .ssh Создайте файл "config"

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

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Исак Эльсио
источник
1
Смотрите Mahan_F ответ для подробного объяснения того, почему это происходит.
refaelio
1
Это единственное, что работало для меня на GitLab. Спасибо, Исак!
awwsmm
5

Быстрый обходной путь: попробуйте переключиться на другую сеть

Я столкнулся с этой проблемой, находясь в точке доступа (соединение 3 / 4G). Переключение на другое соединение (WiFi) решило его, но это всего лишь обходной путь - у меня не было возможности докопаться до сути проблемы, поэтому другие ответы могут быть более интересными для определения основной проблемы

kip2
источник
Я переключился с WiFi на 4G, и это сработало. Я тоже не понимаю.
Адам Кейси
4

Я столкнулся с той же проблемой и не мог найти рабочее решение. Я столкнулся с этой проблемой при настройке локального сервера, и git не смог подключиться через мою прокси-сеть, но моя рабочая станция могла. Это был вывод, когда я запустил команду ssh -vT git@github.com

ubuntu@server:~$ ssh -vT git@github.com
OpenSSH_7.2p2 Ubuntu-4ubuntu2.8, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/ubuntu/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to github.com [13.234.176.102] port 22.

Поэтому я попытался использовать соединение SSH через порт HTTPS, отредактировав файл конфигурации, ~/.ssh/configно безрезультатно.

Host github.com
 Hostname ssh.github.com
 Port 443

Наконец, я нашел эту статью, которая решила и раскрыла реальную проблему.

# github.com
Host github.com
    Hostname ssh.github.com
    ProxyCommand nc -X connect -x <PROXY-HOST>:<PORT> %h %p
    Port 443
    ServerAliveInterval 20
    User git

Это мой конфигурационный файл, и теперь git отлично работает через ssh!

Анимеш Сингх
источник
3

Выполнение:

nc -v -z <git-repository> <port>

Ваш вывод должен выглядеть так:

"Connection to <git-repository> <port> port [tcp/*] succeeded!"

Если вы получаете:

connect to <git-repository> <port> (tcp) failed: Connection timed out

Вам нужно отредактировать файл ~ / .ssh / config. Добавьте что-то вроде следующего:

Host example.com
Port 1234
Амин
источник
5
Я не уверен, что все собираются ncустановить. Что это должно быть? Netcat или что-то?
Hack-R
2

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

Я должен был белый список IP - адресов для 2 порта 22, 80, 443и 9418:

  • 192.30.252.0/22

  • 185.199.108.0/22

В случае, если эти IP не работают, возможно, потому что они были обновлены, вы можете найти самые последние из них на этой странице .

Артур Гриджио
источник
0

Ответ выше дал мне информацию, необходимую для решения этой проблемы. В моем случае URL-адрес неправильно начинался с ssh: ///

Чтобы проверить правильность URL в вашем git config, откройте файл git config: -

git config --local -e

Проверьте запись в URL. Он не должен иметь ssh: /// в начале.

Неверная запись:

 url = ssh:///git@github.com:username/repo.git

Правильная запись:

 url = git@github.com:username/repo.git

Если ваш URL-адрес правильный, то следующим шагом будет попытка найти ответ выше, который предлагает изменить протокол на http.

Manda QoP
источник
0

Когда я случайно переключился на гостевую сеть Wi-Fi, я получил эту ошибку. Пришлось переключиться обратно на мою сеть Wi-Fi по умолчанию .

Ludder
источник
0

У меня была эта проблема в течение 2 часов, и получается, удалив "s" из https и просто сделать:

git clone -b <branchName> http:<projecturl>

Починил это.

aPurpleDev
источник
Пожалуйста, закройте этот вопрос, отметив его как ответ
Clément
0

ПРОБЛЕМА: Шаг, чтобы произвести проблему: git clone git@github.com: sramachand71 / test.git впервые в новом ноутбуке ОШИБКА SSH: подключение к хост - github.com порту 22: Тайм - аут соединение со смертельным исходом: Не удалось прочитать из пульта дистанционного управления репозиторий.

Пожалуйста, убедитесь, что у вас есть правильные права доступа и хранилище существует. РЕШЕНИЕ Впервые в системе для клонирования нам нужно дать двойные кавычки для команды клонирования. $ git clone "git@github.com: sramachand71 / test.git" Я сталкиваюсь с этой проблемой в системе даже после того, как все было правильно, но, наконец, заметил, что двойная кавычка обязательна для URL "repository_url.git" в первый раз или для нового пользователя в системе.

Шивапрасад Р
источник
0

Изменение URL репо с ssh на https не очень важно для меня. Поскольку я предпочитаю sshболее httpsиз - за какое - то дополнительные преимущества , которые я не хочу , чтобы отказаться. Приведенные выше ответы довольно хороши и точны. Если вы столкнулись с этой проблемой в GitLab, перейдите на их официальную страницу документации и измените ваш конфигурационный файл следующим образом.

Host gitlab.com
  Hostname altssh.gitlab.com
  User git
  Port 443
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/gitlab
Мд. Новшад Хасан
источник
0

Перезагрузить компьютер решил это за меня.
Версия Git: 2.27.0.windows.1
Версия ОС: Windows 10 v1909

Wenfang
источник