Networking

更改為靜態 IP 後無法 SSH 到 github.com

  • September 12, 2021

我已經使用 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 顯示它根本沒有收到任何返回數據包:

我的 wireshark 的螢幕截圖,顯示 TCP 重傳

那麼也許不允許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 被阻止),但是我們開始了 - 問題解決了。

引用自:https://serverfault.com/questions/1077252