git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.
你遇到的错误 Permission denied (publickey) 表明 Git 无法使用 SSH 密钥成功连接到 GitHub,通常是因为以下几个原因:SSH 密钥没有正确配置或加载GitHub 没有正确配置你的公钥本地 SSH 客户端配置存在问题
你遇到的错误 Permission denied (publickey) 表明 Git 无法使用 SSH 密钥成功连接到 GitHub,通常是因为以下几个原因:
- SSH 密钥没有正确配置或加载
- GitHub 没有正确配置你的公钥
- 本地 SSH 客户端配置存在问题
下面是排查和解决问题的步骤:
1. 检查 SSH 密钥是否存在
首先,检查是否已经生成了 SSH 密钥,并且密钥文件是否存在。默认情况下,密钥文件应该在 ~/.ssh 目录下,例如:
- Windows:
C:\Users\你的用户名\.ssh\id_rsa或C:\Users\你的用户名\.ssh\login(你使用的私钥文件名) - macOS/Linux:
~/.ssh/id_rsa
使用以下命令查看 ~/.ssh 目录中的文件:
ls ~/.ssh
如果你看到了类似 id_rsa 和 id_rsa.pub 的文件,表示你已经生成了 SSH 密钥。
2. 检查 SSH 公钥是否已添加到 GitHub
确保你已经将公钥添加到 GitHub 中。你可以通过以下步骤来检查:
-
复制你的公钥:使用以下命令查看并复制公钥内容:
cat ~/.ssh/id_rsa.pub # 或者 cat ~/.ssh/login.pub -
登录 GitHub:进入 GitHub 网站,登录到你的账户。
-
添加公钥到 GitHub:
- 进入 Settings(右上角头像点击下拉菜单,选择 Settings)。
- 在左侧菜单中,选择 SSH and GPG keys。
- 点击 New SSH key,将你刚才复制的公钥粘贴到 Key 字段中,并给密钥命名(例如
My Laptop)。 - 点击 Add SSH key。
3. 检查 SSH 连接是否正常
确认你能够通过 SSH 与 GitHub 建立连接。使用以下命令测试 SSH 连接:
ssh -T git@github.com
如果一切配置正确,GitHub 会返回类似以下的消息:
Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.
如果你收到类似 Permission denied 的错误,可能是 SSH 密钥未正确配置或者 GitHub 中未添加你的公钥。
4. 确保 SSH 密钥被加载到 ssh-agent 中
如果你的密钥已经存在并添加到 GitHub,但仍然无法连接,可能是你的 SSH 密钥没有加载到 ssh-agent 中。可以按以下步骤加载密钥:
-
启动 ssh-agent(如果尚未启动):
eval "$(ssh-agent -s)" -
添加你的私钥到 ssh-agent:
ssh-add ~/.ssh/id_rsa # 或者 ~/.ssh/login -
验证 SSH 密钥是否已加载:
ssh-add -l如果密钥已成功加载,输出将列出你的密钥指纹。
5. 配置 Git 使用正确的 SSH 密钥
如果你有多个 SSH 密钥,并且 Git 没有使用正确的密钥,你可以通过配置 ~/.ssh/config 来指定使用哪个密钥。例如,打开或创建一个 ~/.ssh/config 文件,然后添加如下内容:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa # 或者你的私钥路径
6. 确保远程仓库 URL 是正确的
最后,确保你的 Git 配置中远程仓库的 URL 是 SSH 格式。如果你使用的是 HTTPS 格式(例如 https://github.com/username/repository.git),那么 Git 会要求你输入用户名和密码,而不是使用 SSH 密钥进行身份验证。
你可以查看当前远程仓库的 URL:
git remote -v
如果远程 URL 不是 SSH 格式(即不是 git@github.com:username/repository.git),你需要修改它。使用以下命令将远程仓库 URL 更改为 SSH 格式:
git remote set-url origin git@github.com:your-username/your-repository.git
7. 重试推送
完成上述步骤后,重新尝试推送代码:
git push -u origin main # 或者 master
总结
- 确保你的 SSH 密钥已经生成 并且正确配置。
- 将 公钥添加到 GitHub。
- 使用
ssh -T git@github.com测试 SSH 连接。 - 确保你的密钥已经加载到
ssh-agent中。 - 确保远程仓库 URL 使用的是 SSH 格式。
更多推荐
所有评论(0)