GitHub新手必看:SSH密钥设置和‘Permission Denied‘错误解决指南
·
Github SSH密钥错误解决指南
问题描述:
当您尝试从GitHub仓库拉取或推送代码时,可能会遇到这样的错误信息:“git@github.com: Permission denied (publickey). fatal: Could not read from remote repository.” 这类似于您试图进入一间锁着的房间,但您没有正确的钥匙。
解决步骤:
-
检查您的钥匙串:
- 在终端运行
ssh-add -l
来检查您是否已有SSH密钥,即访问GitHub的“钥匙”。 - 如果没有,想象您需要制作一把新钥匙。运行以下命令来创建它:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 在终端运行
-
把新钥匙挂到钥匙串上:
- 使用以下命令将新生成的SSH密钥添加到SSH-Agent,就像把新钥匙挂到钥匙串上一样:
ssh-add ~/.ssh/id_rsa
- 使用以下命令将新生成的SSH密钥添加到SSH-Agent,就像把新钥匙挂到钥匙串上一样:
-
告诉管理员(GitHub)您的新钥匙:
- 打开
~/.ssh/id_rsa.pub
文件,复制里面的内容。这就是您的公钥,相当于钥匙的副本。 - 登录GitHub,进入“Settings” -> “SSH and GPG keys”,点击“New SSH key”,粘贴您的公钥内容。
- 打开
-
测试门锁:
- 运行以下命令,检查您是否能与GitHub成功通信:
ssh -T git@github.com
- 如果系统显示“Hi [Your GitHub Username]! You’ve successfully authenticated…”,则表示成功。
- 运行以下命令,检查您是否能与GitHub成功通信:
-
尝试开门(推送代码):
- 现在尝试推送代码到GitHub:
git push origin main
- 现在尝试推送代码到GitHub:
如果在执行这些步骤后,问题仍然存在,您可能需要检查是否有多个SSH密钥或其他特殊配置问题。
附:第1步中生成SSH密钥的详细步骤(终端会弹出交互)
当您运行 ssh-keygen
命令时,系统会引导您完成几个步骤,就像制作一把特殊钥匙的过程:
-
选择钥匙存放地点:
- 系统会询问您希望将密钥保存在哪个位置,默认路径是
C:\Users\您的用户名/.ssh/id_rsa
。 - 您可以接受默认路径,或者指定一个新的存放地点。
- 系统会询问您希望将密钥保存在哪个位置,默认路径是
-
设置钥匙的密码保护(可选):
- 系统会询问您是否要为这把钥匙设置密码保护。这就像为您的钥匙设置一个密码,增加安全性。
- 您可以选择设置一个密码,也可以不设置,直接按Enter键。
完成这些步骤后,您将拥有一对新的SSH密钥,包括一个公钥(相当于钥匙的副本)和一个私钥(相当于实际的钥匙)。接下来,您需要将公钥添加到GitHub,并测试您的SSH连接。
当您运行 ssh-keygen
命令以生成SSH密钥时,系统会执行一系列操作并提供一些反馈信息。下面是这个过程的详细步骤和每一步所展示的信息:
-
启动生成过程:
- 当您在终端输入
ssh-keygen -t rsa -b 4096 -C "您的邮箱地址"
时,系统开始创建一个新的SSH密钥对。 - 这相当于制作一对高安全性的钥匙和钥匙副本。
- 当您在终端输入
-
选择密钥保存位置:
- 系统会询问您希望将密钥保存在哪里。例如:“Enter file in which to save the key (C:\Users\25451/.ssh/id_rsa):”。
- 您可以接受默认路径,或输入一个新的路径。这就像选择将您的钥匙放在哪个抽屉里。
-
设置密码短语(可选):
- 系统会询问您是否要为密钥设置一个密码短语:“Enter passphrase (empty for no passphrase):”。
- 您可以设置一个密码短语,增加额外的安全层次,或直接按Enter键跳过。这相当于为您的钥匙加上一个密码锁。
-
确认密码短语:
- 如果您设置了密码短语,系统会要求您再次输入以确认:“Enter same passphrase again:”。
- 确认后,继续下一步。
-
密钥生成完成:
- 当密钥生成完毕,系统会显示相关信息,例如:
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)的保存位置。
- 当密钥生成完毕,系统会显示相关信息,例如:
-
密钥指纹和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]-----+
- 这些信息提供了您的密钥的一个视觉和加密摘要。
- 系统还会显示密钥的指纹和Randomart图像,例如:
完成这些步骤后,您的SSH密钥对就创建好了。您的私钥(id_rsa文件)是您个人保留的,而公钥(id_rsa.pub文件)需要添加到GitHub账户中,以便进行安全的通信。
更多推荐
已为社区贡献7条内容
所有评论(0)