Я уже давно пользуюсь github.com, но недавно мой интернет-провайдер переключил мой домашний интернет на статический IP-адрес, и теперь я не могу подключиться к github по SSH.
Что происходит с SSH?
Ключ id_ed25519 только что был перегенерирован. SSH просто останавливается:
$ ssh -T -F ~/.ssh/config [email protected] -vvv
OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /Users/xxxx/.ssh/config
debug1: /Users/xxx/.ssh/config line 1: Applying options for *
debug1: Connecting to github.com port 22.
Wireshark показывает, что он вообще не получает никаких ответных пакетов:
снимок экрана моего Wireshark, показывающий повторные передачи TCP
Так, может быть, SSH не разрешён?
Может быть! Но я могу нормально подключаться по ssh к экземплярам AWS EC2 из той же командной строки. Никаких проблем.
Что еще я пробовал?
Я могу использовать SSH через HTTPS. Например, это...
ssh -T -p 443 [email protected]
...работает отлично, и я могу подключиться. Но мне нужно знать, ПОЧЕМУ старый добрый порт 22 больше не работает у меня.
Что изменилось?
Я попросил своего интернет-провайдера назначить мне статический IP. Они это сделали. Это сработало. Подключения от устройств в моей сети, похоже, идут с этого нового статического IP, который они назначили.
Содержимое конфигурации ssh
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_ed25519
И как дополнительный бонус,
$ git config --list
credential.helper=osxkeychain
user.name=xxxx
[email protected]
core.autocrlf=input
решение1
Использовать трассировку TCP
Следуя совету Теро Килканена, я установил tcptraceroute, что привело к решению проблемы. Редактировать: Я хотел добавить, что я не использовал его, traceroute
потому что знал, что он использует протокол ICMP и не обязательно будет маршрутизироваться так же, как мои пакеты TCP SSH. Так что это tcptraceroute
было для меня в новинку, и я думаю, что это будет очень полезно!
1). Установить tcptraceroute
Это на Mac, поэтому я использовал homebrew для установки предлагаемой формулы: formulae.brew.sh/formula/tcptraceroute:
$ brew install tcptraceroute
2). Запуск tcptraceroute
$ sudo tcptraceroute github.com 22
Я включил фрагмент трассировки, который показывает, что он останавливается у интернет-провайдера:
6 bundle-ether10.win-core10.melbourne.telstra.net (203.50.11.123) 26.865 ms 26.183 ms 27.529 ms
7 bundle-ether2.fli-core10.adelaide.telstra.net (203.50.6.228) 34.738 ms 32.591 ms 37.021 ms
8 bundle-ether1.fli-edge901.adelaide.telstra.net (203.50.11.155) 33.344 ms 33.840 ms 32.964 ms
9 * * *
10 * * *
11 * * *
3) Разрешение проблемы с интернет-провайдером
Прежде чем звонить провайдеру, я проверил настройки аккаунта. Отключение родительского контроля по умолчанию помогло - ssh на github.com восстановлен!
Правила заблокировали только youtube.com, и это не сработало. Похоже, что перезагрузка соединения провайдером после назначения статического IP-адреса вызвала переоценку настроенных правил родительского контроля.
Понятия не имею, почему https к github.com разрешен, а ssh — нет (или даже почему github.com заблокирован), но вот и все — проблема решена.