git学习六:(bug总结)git@github.com: Permission denied (publickey).等

前言

一、bug详情

服务器已经生成密钥,并将公钥配置在了GitHub上的密钥列表中。
Linux服务器上通过 git clone 命令进行克隆私库代码。但是报错如下:

Cloning into 'PolicyChat'...
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.

二、解决

按照下面流程,执行了一遍,得到解决。

1、确认 SSH Agent 正在运行并加载了密钥

● 首先,确认 SSH Agent 正在运行并且你的私钥已经被加载。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa	

上述命令将启动 SSH Agent 并加载你的私钥(假设你的私钥是 ~/.ssh/id_rsa)。

eval “$(ssh-agent -s)” 作用:

eval "$(ssh-agent -s)" 是一个在 Unix 系统中常用的命令组合,用于启动 SSH 代理(ssh-agent)并将它的环境变量导入到当前的 shell 会话中。
具体解释:

  1. ssh-agent:
    ○ ssh-agent 是一个用于管理 SSH 私钥的后台进程。它负责保存你的私钥,并在需要时提供给 SSH 客户端(如 ssh、git 等),从而避免你每次使用 SSH 时都要手动输入密码。
  2. -s 选项:
    ○ -s 选项告诉 ssh-agent 输出一系列 shell 命令(包括环境变量设置)来启动代理并将代理的连接信息传递给当前的 shell。
  3. eval 命令:
    ○ eval 是一个 shell 内建命令,用于执行作为字符串传递给它的命令。在这里,eval “$(ssh-agent -s)” 的作用是让 shell 执行 ssh-agent -s 的输出内容。
  4. $(ssh-agent -s):
    ○ $(ssh-agent -s) 是命令替换,表示先执行 ssh-agent -s,然后将其输出作为参数传递给 eval。ssh-agent -s 的输出通常是类似如下的内容:
    SSH_AUTH_SOCK=/tmp/ssh-abc12345/agent.6789; export SSH_AUTH_SOCK;
    SSH_AGENT_PID=12345; export SSH_AGENT_PID;
    ○ 这两行输出分别设置了两个环境变量:
    ■ SSH_AUTH_SOCK: 指向 ssh-agent 创建的 Unix 套接字,SSH 客户端通过这个套接字与代理通信。
    ■ SSH_AGENT_PID: 表示 ssh-agent 进程的 PID,可以用来管理这个代理进程。
  5. 总结:
    ○ 当你运行 eval “$(ssh-agent -s)” 时,实际上是在启动 ssh-agent,并将其环境变量导入到当前 shell 中。这样,后续的 SSH 相关命令(如 ssh 或 git)就能够通过 ssh-agent 使用你加载的私钥,而不需要每次手动输入密码。

2、检查 SSH 密钥是否正确配置

● 你可以使用以下命令来检查 SSH 密钥是否正确配置并可以成功连接到 GitHub:

ssh -T git@github.com

如果配置正确,你应该看到一条欢迎消息,例如:

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

如果你看到类似 Permission denied (publickey) 的错误消息,说明 SSH 密钥配置可能存在问题。

3、确认本地的 SSH 密钥与 GitHub 上的公钥匹配

● 确保你添加到 GitHub 的公钥与本地使用的私钥匹配。你可以通过以下命令查看本地公钥:

cat ~/.ssh/id_rsa.pub

然后,将输出内容与 GitHub 上的 SSH Key 列表中的公钥进行比较。

4、检查远程仓库的 URL 是否正确

● 确保你使用的是正确的 SSH URL 格式:

git@github.com:fenginsist/PolicyChat.git

如果你误用了 HTTPS URL,可能会导致权限问题。SSH URL 格式为 git@github.com:username/repository.git

5、权限和文件权限问题

● 确保你的 SSH 密钥文件权限正确,否则 SSH 客户端可能会拒绝使用它:

chmod 600 ~/.ssh/id_rsa

6、代理配置问题

● 如果你通过代理连接到互联网,确保代理配置没有影响到 SSH 连接。

7、SSH 配置文件 (~/.ssh/config)

● 你可以通过编辑 SSH 配置文件来指定使用哪个 SSH 密钥(如果你有多个):

Host github.com
    User git
    Hostname github.com
    IdentityFile ~/.ssh/id_rsa

这样可以确保正确的 SSH 密钥用于连接到 GitHub。
通过以上步骤,你应该能够诊断并解决 git clone 操作中出现的 SSH 认证问题。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当你在使用命令ssh -T git@github.com测试公钥是否添加成功时,出现了报错"git@github.com: Permission denied (publickey)",以及在执行命令git push -u origin master时出现了错误提示"gitt@github.com: Permission denied (publickey). fatal: Could not read from remote repository",这通常是因为你本地或服务器上没有生成SSH key所导致的。SSH key是一种用于身份验证的加密密钥对,它包括了公钥和私钥两部分。在使用GitGitHub进行通信时,需要将生成的公钥添加到GitHub账户中,以便进行身份验证。 为了解决这个问题,你需要执行以下步骤: 1. 检查你的电脑上是否已经生成了SSH key。你可以通过运行命令"ls -al ~/.ssh"来查看。如果有一个名为id_rsa.pub或id_dsa.pub的文件,那么说明你已经生成了SSH key。 2. 如果没有生成SSH key,你需要使用以下命令生成一个新的SSH key: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 这里的"your_email@example.com"应该替换成你在GitHub上注册的电子邮件地址。 3. 在生成SSH key后,你需要将公钥添加到你的GitHub账户中。你可以使用以下命令将公钥复制到剪贴板: pbcopy < ~/.ssh/id_rsa.pub 然后登录到GitHub账户,转到"Settings" -> "SSH and GPG keys" -> "New SSH key",将公钥粘贴到"Key"字段中,然后点击"Add SSH key"按钮保存。 现在,当你再次执行命令ssh -T git@github.comgit push -u origin master时,应该不再出现"Permission denied (publickey)"的错误提示了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Git错误记录 — git@github.com: Permission denied (publickey)](https://blog.csdn.net/baidu_40188909/article/details/108407895)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MAC电脑gitt@github.com: Permission denied (publickey). fatal: Could not read from remote repository](https://blog.csdn.net/weixin_44468956/article/details/125293590)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java冯坚持

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值