git@github.com:权限被拒绝(Linux 指南)

GitHub SSH 身份验证和电子邮件隐私指南(git@github.com:权限被拒绝)

如果您遇到以下错误,请务必查看本指南:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

先决条件

  • Git 安装
  • GitHub 帐户
  • Linux/Unix 终端 (bash)
  • 1.检查现有的 SSH 密钥

    首先,检查您是否已拥有 SSH 密钥:

    ls -al ~/.ssh

    查找如下文件:

  • id_rsa (私钥)
  • id_rsa.pub(公钥)
  • 2. 生成新的 SSH 密钥

    如果您想删除现有密钥(id_rsa、id_rsa.pub)并重新开始,请按照以下步骤操作:

    # Remove private key
    rm ~/.ssh/id_rsa
    
    # Remove public key
    rm ~/.ssh/id_rsa.pub

    或者删除多个密钥对(如果有)

    # Remove all RSA keys
    rm ~/.ssh/id_rsa*

    如果未找到现有密钥,则生成一个新的 SSH 密钥:

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

    密钥生成步骤:

  • 当提示输入文件位置时,按 Enter 接受默认值
  • 可选:设置密码以提高安全性
  • 系统会生成两个文件:私钥(id_rsa)公钥(id_rsa.pub)
  • 您可以随时从这里检查:ls -al ~/.ssh
  • 3. 电子邮件隐私配置

    GitHub 电子邮件隐私

    GitHub 提供了几种选项来保护你的电子邮件隐私:

  • 公共电子邮件地址 对 GitHub 上的每个人都可见 用于提交元数据
  • GitHub 提供的私人电子邮件地址隐藏您的个人电子邮件格式:username@users.noreply.github.com
  • 配置电子邮件隐私

    步骤 1:GitHub 账户设置

  • 导航至 GitHub 电子邮件设置
  • 选择您喜欢的隐私选项:保持电子邮件地址私密使用 GitHub 提供的私人电子邮件
  • 第 2 步:配置本地 Git 电子邮件

    使用 GitHub 提供的私人电子邮件进行提交:

    # Set global Git email (replace with your GitHub username)
    git config --global user.email "username@users.noreply.github.com"
    
    # Optionally set your name
    git config --global user.name "Your Name"

    确认

  • 检查当前 Git 配置:
  • git config --global user.email
      git config --global user.name

    4.显示你的公共 SSH 密钥

    cat ~/.ssh/id_rsa.pub

    复制整个输出 - 这是您将添加到 GitHub 的密钥。

    5. 将 SSH 密钥添加到 GitHub

    Web 界面步骤:

  • 登录 GitHub.com
  • 点击您的个人资料图片→设置
  • 导航到“SSH 和 GPG 密钥”
  • 点击“新建 SSH 密钥”
  • 为该键指定一个描述性标题(例如“MyThinkPad”)
  • 粘贴复制的公钥
  • 6.配置SSH代理

    启动 SSH 代理并添加您的密钥:

    # Start the SSH agent
    eval "$(ssh-agent -s)"
    
    # Add your SSH private key
    ssh-add ~/.ssh/id_rsa

    7. 测试 GitHub 连接

    验证您的 SSH 连接:

    ssh -T git@github.com

    预期输出包括一条带有您的 GitHub 用户名的成功消息,如下所示:

    "Hi ! You've successfully authenticated, but GitHub does not provide shell access."

    常见问题故障排除

    权限被拒绝错误

  • 确保密钥权限正确:
  • chmod 600 ~/.ssh/id_rsa
      chmod 644 ~/.ssh/id_rsa.pub

    多个 GitHub 帐户

  • 对不同的帐户使用不同的密钥
  • 配置~/.ssh/config来指定密钥
  • 最佳实践

  • 使用强密码
  • 定期轮换 SSH 密钥
  • 不再使用时从 GitHub 中删除密钥
  • 保护您的电子邮件隐私
  • 使用 GitHub 提供的私人电子邮件进行提交
  • 验证清单

  • 已生成 SSH 密钥
  • 密钥已添加到 GitHub
  • SSH 代理已配置
  • 已配置电子邮件隐私
  • GitHub 连接测试成功
  • 其他资源

  • GitHub SSH 文档
  • GitHub 电子邮件隐私设置