遇到 “git@github.com: Permission denied (publickey)” 錯誤通常意味著你嘗試通過 SSH 連接到 GitHub 時,SSH 密鑰沒有被正確設置或者 GitHub 無法識別你的公鑰。這里有幾個步驟可以幫助你解決這個問題:
- 檢查 SSH 密鑰
首先,確保你已經在本地生成了 SSH 密鑰,并且已經將其添加到 SSH agent 中。你可以通過以下命令來檢查:
檢查是否已生成 SSH 密鑰
ls -al ~/.ssh
這應該會列出你的私鑰和公鑰文件,通常是 id_rsa 和 id_rsa.pub
啟動 SSH agent
eval “$(ssh-agent -s)”
添加你的私鑰到 SSH agent
ssh-add ~/.ssh/id_rsa
2. 查看 SSH 配置
確保你的 ~/.ssh/config 文件(如果存在)或者全局 SSH 配置文件(通常位于 /etc/ssh/ssh_config)正確設置了 Host github.com 的參數。例如:
Host github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
3. 檢查公鑰是否在 GitHub 上注冊
登錄到 GitHub,進入你的賬戶設置 -> SSH 和 GPG 密鑰,檢查你的公鑰是否已經列在那里。如果沒有,你需要添加它:
打開終端,查看你的公鑰:
cat ~/.ssh/id_rsa.pub
復制輸出的內容。
在 GitHub 的設置中,點擊“New SSH key”或“Add SSH key”,粘貼你的公鑰,并保存。
- 測試 SSH 連接
在命令行中,嘗試使用以下命令測試 SSH 連接:
ssh -T git@github.com
如果一切設置正確,你應該會看到類似 “Hi [username]! You’ve successfully authenticated, but GitHub does not provide shell access.” 的消息。
- 使用 HTTPS 替代 SSH(如果問題持續存在)
如果問題依舊,你可以嘗試使用 HTTPS URL 來克隆倉庫,而不是 SSH URL:
git clone https://github.com/username/repository.git
然后使用你的 GitHub 用戶名和密碼進行認證。
- 檢查防火墻和代理設置
如果你在公司或學校網絡后面,可能存在網絡代理或防火墻限制。確保你的網絡設置允許你訪問 GitHub。如果你使用代理,確保你的 Git 配置了正確的代理設置:
git config --global http.proxy ‘http://proxy.example.com:8080’
git config --global https.proxy ‘https://proxy.example.com:8080’
然后再次嘗試連接。如果你不再需要通過代理,可以使用:
git config --global --unset http.proxy
git config --global --unset https.proxy
按照這些步驟操作后,通常可以解決大部分關于 SSH 密鑰的問題。如果問題仍然存在,可能需要更詳細地檢查你的系統設置或聯系網絡管理員。