更改為靜態 IP 後無法 SSH 到 github.com
我已經使用 github.com 很長時間了,但只是讓我的 ISP 將我的家庭網際網路切換到靜態 IP,現在我無法通過 SSH 連接到 github。
SSH 會發生什麼?
id_ed25519 密鑰剛剛重新生成。SSH 只是停止:
$ ssh -T -F ~/.ssh/config git@github.com -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 git@ssh.github.com
…工作正常,我可以連接。但我需要知道為什麼普通的 ol’ 埠 22 不再為我工作了。
發生了什麼變化?
我要求我的 ISP 為我分配一個靜態 IP。他們已經這樣做了。有效。我網路上設備的連接似乎來自他們分配的這個新靜態 IP。
ssh 配置內容
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_ed25519
作為額外的獎勵,
$ git config --list credential.helper=osxkeychain user.name=xxxx user.email=xxx.xxx@xxx.com core.autocrlf=input
使用 tcp 跟踪路由
按照 Tero Kilkanen 的建議,我安裝了 tcptraceroute,從而解決了問題。編輯:我想補充一點我沒有使用過
traceroute
,因為我知道它使用 ICMP 協議,並且不一定會以與我的 TCP SSH 數據包相同的方式路由。所以tcptraceroute
對我來說是新的,我認為它會非常有用!1)。安裝 tcptraceroute
這是在 Mac 上,所以我使用自製軟體來安裝建議的公式: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 之前,我檢查了帳戶設置。禁用預設的家長控制就可以了——恢復到 github.com 的 ssh!
規則只阻止了 youtube.com,但沒有奏效。分配靜態 IP 後 ISP 重新啟動連接似乎導致重新評估配置的家長控制規則。
不知道為什麼允許 https 到 github.com 而不允許 ssh(甚至為什麼 github.com 被阻止),但是我們開始了 - 問題解決了。