如何修复 git@github.com: Permission denied (publickey) 错误【202…

git@github.com: Permission denied (publickey) 错误解决方案

错误概述

在使用 Git 进行操作时,您可能会遇到以下错误信息:“git@github.com: Permission denied (publickey)”。这个错误通常表示您在尝试通过 SSH 连接到 GitHub 时,GitHub 无法识别您的 SSH 公钥。由于没有适当的认证,操作无法继续。

常见原因

导致“git@github.com: Permission denied (publickey)”错误的常见原因包括:
1. 未生成 SSH 密钥:您的计算机上可能没有 SSH 密钥,或者未将其添加到 GitHub。
2. SSH 密钥未关联:即使您已生成 SSH 密钥,如果它没有与您的 GitHub 账户关联,您仍然无法进行身份验证。
3. 使用错误的 SSH URL:您可能使用了需要写入权限的 SSH URL,但您没有该仓库的写入权限。
4. SSH 配置文件问题:您的 SSH 配置文件可能没有正确配置,导致无法找到合适的密钥。
5. 权限设置不当:私钥文件的权限设置过于宽松,SSH 客户端拒绝使用该密钥。

解决方法

方法 1: 生成并添加 SSH 密钥

  1. 打开终端,输入以下命令生成新的 SSH 密钥:
    bash
    cd ~/.ssh
    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  2. 按照提示操作,生成密钥对(公钥和私钥)。生成后,公钥通常会保存在 ~/.ssh/id_rsa.pub 文件中。
  3. 使用以下命令将公钥复制到剪贴板:
  4. macOS:
    bash
    pbcopy < ~/.ssh/id_rsa.pub
  5. Linux:
    bash
    xclip -sel clip < ~/.ssh/id_rsa.pub
  6. Windows:
    bash
    clip < ~/.ssh/id_rsa.pub
  7. 登录到 GitHub,进入 Settings > SSH and GPG keys > New SSH key,将复制的公钥粘贴到对应的文本框中,并保存。

方法 2: 检查 SSH 连接

  1. 在终端中运行以下命令以检查 SSH 连接:
    bash
    ssh -vT git@github.com
  2. 如果连接成功,您将看到类似“Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.”的消息。
  3. 如果仍然有错误,请根据输出信息检查问题。

方法 3: 确认使用正确的 SSH URL

  1. 检查您正在使用的 Git URL 是否为 SSH 格式,格式如下:
    git@github.com:username/repository.git
  2. 如果您没有写入权限,请使用 HTTPS URL 形式:
    https://github.com/username/repository.git

方法 4: 配置 SSH 客户端

  1. 如果您有多个 SSH 密钥,可以创建或编辑 ~/.ssh/config 文件,确保包含以下内容:
    bash
    Host github.com
    IdentityFile ~/.ssh/id_rsa

    替换 id_rsa 为您的密钥文件名。

方法 5: 检查私钥权限

  1. 确保您的私钥文件权限设置正确,使用以下命令:
    bash
    chmod 400 ~/.ssh/id_rsa

    这将确保只有文件所有者可以读取该文件。

预防提示

  • 定期检查 SSH 密钥:确保您的 SSH 密钥是最新的,并且在需要时更新。
  • 使用 HTTPS 作为备选方案:如果不需要使用 SSH,可以选择 HTTPS URL,这样就不需要处理 SSH 密钥。
  • 了解权限设置:确保密钥文件的权限设置正确,以避免不必要的访问问题。

相关错误

  • “UNPROTECTED PRIVATE KEY FILE!”错误:表示您的私钥文件权限过于宽松,解决方法是通过 chmod 400 命令更改权限。
  • “Permission denied (publickey)”在 AWS EC2 中:确保您的 EC2 实例设置了正确的密钥对,并且您使用的用户和密钥匹配。

总结

遇到“git@github.com: Permission denied (publickey)”错误时,首先要检查 SSH 密钥的生成与配置。确保密钥已添加到 GitHub 账户,并且使用正确的 URL 格式。如果问题仍然存在,可以按照上述步骤进行进一步的故障排除。通过正确的配置,您可以顺利使用 Git 进行版本控制。

コメント

タイトルとURLをコピーしました