ssh: підключення до порту github.com 22: З'єднання вичерпано


174

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


6
Створіть точку доступу на своєму мобільному пристрої та підключіться через свій мобільний пристрій git push. Працювали для мене.
zundi


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'
Фахер,

Мені довелося видалити .git з URL-адреси, щоб це працювало на мене. url = github.com/username/repo
Jesse Buss

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. Більшість правил брандмауера повинні дозволяти це, але проксі-сервери можуть заважати

Будемо сподіватися, що це допомагає іншим, хто має те саме питання, що і я.


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

Джерело: git: // протокол заблокований компанією, як я можу це обійти?


1
Дякую! Наш був під час побудови Дженкінса, тому я не зміг вручну редагувати файл 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). Перехід на інше з'єднання (Wi-Fi) вирішив це, але це лише вирішення проблеми - я не отримав шансу дійти до нижньої частини питання, тому інші відповіді можуть бути цікавішими для визначення основної проблеми


Я перейшов з 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: -

git config --local -e

Перевірте запис URL-адреси. Він НЕ повинен мати ssh: /// на початку.

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

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

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

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

Якщо ваша URL-адреса правильна, наступним кроком буде спробувати відповідь вище, що пропонує змінити протокол на http.


0

Коли я випадково перейшов у гостьову мережу wifi, у мене з’явилася ця помилка. Довелося переключитися на мою мережу Wi-Fi за замовчуванням .


0

У мене ця проблема була протягом 2 годин, і виявляється, видаліть "s" з https і просто виконайте:

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

Виправлено це.


Закрийте це запитання, позначаючи його як відповідь
Clément

0

ВИПУСКА: Крок, щоб створити випуск: git clone git@github.com: sramachand71 / test.git вперше в новому ноутбуці ПОМИЛКА ssh: підключення до хосту github.com порт 22: З'єднання вичерпано фатально: Не вдалося прочитати з віддаленого сховище.

Переконайтеся, що у вас є правильні права доступу та сховище існує. РІШЕННЯ вперше в системі для клонування нам потрібно дати подвійні лапки для команди clone. $ git clone "git@github.com: sramachand71 / test.git" Я стикаюся з цією проблемою в системі навіть після того, як усе було правильно, але нарешті зауважив, що подвійна цитата є обов'язковою для першого "urposit" або нового користувача в системі.


0

Зміна URL-адреси repo з 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.