這個錯誤表示你的 SSH 連接無法到達 GitHub 服務器。以下是詳細解決方案,按照優先級排序:
首選解決方案:使用 SSH over HTTPS(端口 443)
這是最有效的解決方案,因為許多網絡會阻止 22 端口:
# 編輯 SSH 配置文件
nano ~/.ssh/config
添加以下內容:
Host github.comHostname ssh.github.comPort 443User git
保存后測試連接:
ssh -T git@github.com
如果看到 “You’ve successfully authenticated” 消息,即可正常使用 git push
替代解決方案:切換到 HTTPS
如果 SSH 仍然失敗:
# 查看當前遠程 URL
git remote -v# 切換到 HTTPS
git remote set-url origin https://github.com/用戶名/倉庫名.git# 然后推送
git push origin master
系統會提示輸入 GitHub 用戶名和密碼(建議使用個人訪問令牌代替密碼)
完整排查步驟:
-
檢查網絡連接:
ping github.com telnet github.com 22 # 或使用 nc -zv github.com 22
如果無法連接,嘗試:
- 關閉 VPN/防火墻
- 切換網絡(如手機熱點)
- 等待網絡恢復
-
驗證 SSH 配置:
# 檢查密鑰是否加載 ssh-add -l# 如果沒有密鑰,添加默認密鑰 ssh-add ~/.ssh/id_rsa # 或你的密鑰文件
-
更新 known_hosts:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
-
測試詳細連接:
ssh -Tv git@github.com
查看輸出中 “Connection refused” 出現的具體位置
高級解決方案:
-
使用代理(如果處于受限網絡):
# 在 ~/.ssh/config 添加 Host github.comProxyCommand nc -X connect -x 代理IP:端口 %h %p
-
更新 Git 和 SSH:
# macOS brew upgrade git openssh# Windows git update-git-for-windows
-
創建新倉庫測試:
mkdir test-repo && cd test-repo git init touch test.txt git add . && git commit -m "test" git remote add origin git@github.com:用戶名/test-repo.git git push -u origin master
臨時解決方案:
# 使用 git 內置的 HTTPS 端口回退
git config --global url."https://github.com/".insteadOf git@github.com:
git config --global url."https://".insteadOf git://
重要提示:如果使用企業網絡/校園網,可能需要聯系網絡管理員開放 22 或 9418 端口。GitHub 狀態可查看 https://www.githubstatus.com
完成這些步驟后,應該能成功推送代碼。如果問題仍然存在,請提供 ssh -Tv git@github.com
的輸出結果以便進一步分析。