我已经使用 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 显示它根本没有收到任何返回数据包:
那么也许不允许SSH?
也许!但是我可以从同一个命令提示符处通过 ssh 连接到 AWS EC2 实例。完全没有问题。
我还尝试了什么?
我可以通过 HTTPS 使用 SSH。例如,这...
ssh -T -p 443 [email protected]
...工作正常,我可以连接。但我需要知道为什么普通的 ol' 端口 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
使用 tcp 跟踪路由
按照 Tero Kilkanen 的建议,我安装了 tcptraceroute,从而解决了问题。编辑:我想补充一点我没有使用过
traceroute
,因为我知道它使用 ICMP 协议,并且不一定会以与我的 TCP SSH 数据包相同的方式路由。所以tcptraceroute
对我来说是新的,我认为它会非常有用!1)。安装 tcptraceroute
这是在 Mac 上,所以我使用自制软件来安装建议的公式:formulae.brew.sh/formula/tcptraceroute:
2)。运行 tcptraceroute
我包含了一段跟踪,显示它在 ISP 处停止:
3)。与 ISP 的解决方案
在打电话给 ISP 之前,我检查了帐户设置。禁用默认的家长控制就可以了——恢复到 github.com 的 ssh!
规则只阻止了 youtube.com,但没有奏效。分配静态 IP 后 ISP 重新启动连接似乎导致重新评估配置的家长控制规则。
不知道为什么允许 https 到 github.com 而不允许 ssh(甚至为什么 github.com 被阻止),但是我们开始了 - 问题解决了。