我已經使用 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]
....工作正常,我可以連接。但我需要知道為什麼普通的 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 追蹤路由
按照 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 之前,我檢查了帳戶設定。禁用預設的家長監護功能就可以解決問題 - ssh 到 github.com 已恢復!
這些規則只屏蔽了 youtube.com,但那不起作用。 ISP 在分配靜態 IP 後重新啟動連線似乎可能導致重新評估已設定的家長監護規則。
不知道為什麼允許 https 訪問 github.com 而不允許 ssh(甚至不知道為什麼 github.com 被阻止),但問題就這樣解決了。