解决 Git 在 GitHub 上报错 `Permission denied (publickey). Could not read from remote repository`

作者:c4t2024.02.04 16:09浏览量:48

简介:当你尝试从 GitHub 仓库克隆或拉取代码时,可能会遇到 `Permission denied (publickey). Could not read from remote repository` 的错误。这个错误通常意味着你的本地计算机没有向 GitHub 证明其身份的公钥。下面是一些解决此问题的步骤。

当你尝试从 GitHub 仓库克隆或拉取代码时,可能会遇到 Permission denied (publickey). Could not read from remote repository 的错误。这个错误通常意味着你的本地计算机没有向 GitHub 证明其身份的公钥。下面是一些解决此问题的步骤:

  1. 检查 SSH 密钥:首先,你需要确保你的本地计算机上存在有效的 SSH 密钥。你可以在 ~/.ssh 目录下查看是否存在 id_rsaid_rsa.pub 这两个文件。如果没有,你需要生成一个新的 SSH 密钥。你可以使用以下命令生成一个新的密钥:
    在 Linux 或 Mac 上:
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    在 Windows 上:
    你需要安装 Git Bash 或其他类似的工具,并在其中运行上述命令。
  2. 添加 SSH 密钥到 GitHub:生成密钥后,你需要将其添加到你的 GitHub 账户中。登录到你的 GitHub 账户,进入「Settings」(设置),然后选择「SSH and GPG keys」(SSH 和 GPG 密钥)。点击「New SSH key」(新建 SSH 密钥),然后粘贴你在第一步中生成的公钥(即 id_rsa.pub 文件的内容)。保存更改。
  3. 使用 HTTPS 替代 SSH:如果你不想使用 SSH,你也可以尝试使用 HTTPS 来克隆和拉取代码。在克隆或拉取代码时,将 URL 从 git@github.com:username/repo.git 更改为 https://github.com/username/repo.git。注意,使用 HTTPS 可能需要你输入用户名和密码来进行身份验证。
  4. 检查代理设置:如果你在使用代理服务器,可能需要检查你的代理设置是否正确。你可以通过设置 git config --global --unset http.proxygit config --global --unset https.proxy 来禁用代理。如果你的代理需要认证,你可能需要使用 git config --global http.proxy http://username:password@proxy:portgit config --global https.proxy https://username:password@proxy:port 来设置认证信息。
  5. 检查防火墙和安全软件:有时,防火墙或安全软件可能会阻止 SSH 连接。确保你的防火墙和安全软件没有阻止 SSH 连接。
  6. 重新生成 SSH 密钥:如果以上步骤都不能解决问题,你可以尝试在另一台计算机上生成新的 SSH 密钥,并将其添加到你的 GitHub 账户中。
  7. 手动添加公钥:如果你仍然遇到问题,可以尝试手动将公钥添加到你的 GitHub 账户中。登录到你的 GitHub 账户,进入「Settings」(设置),然后选择「SSH and GPG keys」(SSH 和 GPG 密钥)。点击「New SSH key」(新建 SSH 密钥),然后粘贴你在第一步中生成的公钥(即 id_rsa.pub 文件的内容)。保存更改。
    按照以上步骤操作后,你应该能够成功地从 GitHub 仓库克隆或拉取代码,而不会再遇到 Permission denied (publickey). Could not read from remote repository 的错误。如果问题仍然存在,你可能需要检查你的网络连接或与你的网络管理员联系。