在这里插入图片描述

Github SSH密钥错误解决指南

问题描述
当您尝试从GitHub仓库拉取或推送代码时,可能会遇到这样的错误信息:“git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.” 这类似于您试图进入一间锁着的房间,但您没有正确的钥匙。

解决步骤

  1. 检查您的钥匙串

    • 在终端运行 ssh-add -l 来检查您是否已有SSH密钥,即访问GitHub的“钥匙”。
    • 如果没有,想象您需要制作一把新钥匙。运行以下命令来创建它:
      ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
      
  2. 把新钥匙挂到钥匙串上

    • 使用以下命令将新生成的SSH密钥添加到SSH-Agent,就像把新钥匙挂到钥匙串上一样:
      ssh-add ~/.ssh/id_rsa
      
  3. 告诉管理员(GitHub)您的新钥匙

    • 打开 ~/.ssh/id_rsa.pub 文件,复制里面的内容。这就是您的公钥,相当于钥匙的副本。
    • 登录GitHub,进入“Settings” -> “SSH and GPG keys”,点击“New SSH key”,粘贴您的公钥内容。
  4. 测试门锁

    • 运行以下命令,检查您是否能与GitHub成功通信:
      ssh -T git@github.com
      
    • 如果系统显示“Hi [Your GitHub Username]! You’ve successfully authenticated…”,则表示成功。
  5. 尝试开门(推送代码)

    • 现在尝试推送代码到GitHub:
      git push origin main
      

如果在执行这些步骤后,问题仍然存在,您可能需要检查是否有多个SSH密钥或其他特殊配置问题。

附:第1步中生成SSH密钥的详细步骤(终端会弹出交互)

当您运行 ssh-keygen 命令时,系统会引导您完成几个步骤,就像制作一把特殊钥匙的过程:

  1. 选择钥匙存放地点

    • 系统会询问您希望将密钥保存在哪个位置,默认路径是 C:\Users\您的用户名/.ssh/id_rsa
    • 您可以接受默认路径,或者指定一个新的存放地点。
  2. 设置钥匙的密码保护(可选):

    • 系统会询问您是否要为这把钥匙设置密码保护。这就像为您的钥匙设置一个密码,增加安全性。
    • 您可以选择设置一个密码,也可以不设置,直接按Enter键。

完成这些步骤后,您将拥有一对新的SSH密钥,包括一个公钥(相当于钥匙的副本)和一个私钥(相当于实际的钥匙)。接下来,您需要将公钥添加到GitHub,并测试您的SSH连接。
当您运行 ssh-keygen 命令以生成SSH密钥时,系统会执行一系列操作并提供一些反馈信息。下面是这个过程的详细步骤和每一步所展示的信息:

  1. 启动生成过程

    • 当您在终端输入 ssh-keygen -t rsa -b 4096 -C "您的邮箱地址" 时,系统开始创建一个新的SSH密钥对。
    • 这相当于制作一对高安全性的钥匙和钥匙副本。
  2. 选择密钥保存位置

    • 系统会询问您希望将密钥保存在哪里。例如:“Enter file in which to save the key (C:\Users\25451/.ssh/id_rsa):”。
    • 您可以接受默认路径,或输入一个新的路径。这就像选择将您的钥匙放在哪个抽屉里。
  3. 设置密码短语(可选):

    • 系统会询问您是否要为密钥设置一个密码短语:“Enter passphrase (empty for no passphrase):”。
    • 您可以设置一个密码短语,增加额外的安全层次,或直接按Enter键跳过。这相当于为您的钥匙加上一个密码锁。
  4. 确认密码短语

    • 如果您设置了密码短语,系统会要求您再次输入以确认:“Enter same passphrase again:”。
    • 确认后,继续下一步。
  5. 密钥生成完成

    • 当密钥生成完毕,系统会显示相关信息,例如:
      Your identification has been saved in C:\Users\25451/.ssh/id_rsa
      Your public key has been saved in C:\Users\25451/.ssh/id_rsa.pub
      
    • 这告诉您私钥(identification)和公钥(public key)的保存位置。
  6. 密钥指纹和Randomart图像

    • 系统还会显示密钥的指纹和Randomart图像,例如:
      The key fingerprint is:
      SHA256:azNoG0XUiqPo3qrMvYguXfi1YLQH8Tx3D+qkEZfkGGA 2545197649@qq.com
      The key's randomart image is:
      +---[RSA 4096]----+
      |    E.  ..       |
      |   .. ... .      |
      |     + *.o       |
      |    o O.* o      |
      |   + + *So o     |
      |  o * +oo.  .    |
      | o + ++*=        |
      |= =...o+.o       |
      |=Bo+o .          |
      +----[SHA256]-----+
      
    • 这些信息提供了您的密钥的一个视觉和加密摘要。

完成这些步骤后,您的SSH密钥对就创建好了。您的私钥(id_rsa文件)是您个人保留的,而公钥(id_rsa.pub文件)需要添加到GitHub账户中,以便进行安全的通信。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐