更改为静态 IP 后无法通过 SSH 连接到 github.com

更改为静态 IP 后无法通过 SSH 连接到 github.com

我已经使用 github.com 很长时间了,但是我的 ISP 刚刚将我的家庭互联网切换到静态 IP,现在我无法通过 SSH 连接到 github。

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 实例。完全没有问题。

我还尝试过什么?

我可以通过 HTTPS 使用 SSH。例如,这个...

ssh -T -p 443 [email protected]

...运行正常,我可以连接。但我需要知道为什么普通的 22 端口不再对我有用。

有什么改变?

我要求我的 ISP 为我分配一个静态 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 traceroute

根据 Tero Kilkanen 的建议,我安装了 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

我附加了一个跟踪片段,显示它在 ISP 处停止:

 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). ISP解析

在给 ISP 打电话之前,我检查了账户设置。禁用默认家长控制就成功了 - ssh 到 github.com 的权限恢复了!

规则仅阻止了 youtube.com,但不起作用。ISP 在分配静态 IP 后重新启动连接,这似乎导致重新评估配置的家长控制规则。

不知道为什么允许使用 https 到 github.com 而不允许 ssh(甚至不知道为什么 github.com 被阻止),但我们这样做了 - 问题解决了。

相关内容