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

简介: 本文是关于解决在使用Git和GitHub时遇到的“git@github.com: Permission denied (publickey)”错误的指南。文章提供了详细的步骤,包括确认SSH Agent运行状态、检查密钥配置、确保密钥匹配、验证仓库URL、检查权限和代理设置,以及配置SSH文件。这些步骤帮助用户诊断并解决SSH认证问题。

一、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 认证问题。

相关文章
|
10月前
|
网络协议 开发工具 git
解决 git 报错 “fatal: unable to access ‘https://github.com/.../.git‘: Recv failure Connection was rese
在使用 Git/Git小乌龟 进行代码管理的过程中,经常会遇到各种各样的问题,其中之一就是在执行 git clone 或 git pull 等操作时出现 “fatal: unable to access ‘https://github.com/…/.git’: Recv failure Connection was reset” 的报错。这个问题通常是由网络连接问题或代理设置不正确导致的。在我的个人使用经验中,我亲自尝试了四种方法,它们都能够有效地解决这个报错。个人比较推荐方法二。
7116 1
|
人工智能 API 开发工具
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
GitHub MCP Server是基于Model Context Protocol的服务器工具,提供与GitHub API的无缝集成,支持自动化处理问题、Pull Request和仓库管理等功能。
2489 2
GitHub官方开源MCP服务!GitHub MCP Server:无缝集成GitHub API,实现Git流程完全自动化
|
文字识别 网络协议 开发工具
GitHub封锁?推荐5个国产的Git仓库替代平台
近日,GitHub对中国区IP的部分限制引发了广泛关注。未登录用户被拒,已登录用户功能受限,南北网络环境差异更显“内卷”。为应对这一挑战,本文推荐了多个国产Git平台:Gitee(码云)、GitCode(CSDN旗下)、CODING(腾讯系)、CodeUP(阿里云支持)及微信代码管理工具。这些平台功能全面、稳定性强,是开发者迁移项目的理想选择。通过同步代码、配置CI/CD流水线等简单步骤,可确保项目平稳过渡。此次事件提醒我们,掌握核心技能与支持国产平台同样重要!
12097 11
|
安全 Linux 网络安全
在Linux(CentOS和AWS)上安装更新的git2的方法并配置github-ssh
经过以上这些步骤,你现在就能在GitHub上顺利往返,如同海洋中的航海者自由驰骋。欢迎你加入码农的世界,享受这编程的乐趣吧!
513 10
|
网络安全 开发工具 git
解决 Git 访问 GitHub 时的 SSL 错误
通过上述步骤,可以有效解决 Git 访问 GitHub 时的 SSL 错误。推荐优先更新 CA 证书和正确配置 Git 使用 CA 证书,避免禁用 SSL 验证。如果问题持续,可以切换到 SSH 方式访问 GitHub,确保连接的安全性和稳定性。希望这些内容对您的学习和工作有所帮助。
6203 4
|
8月前
|
JSON Kubernetes 安全
找到啦,我们已上车,Github 27000+ star,研发团队必备开源工具项目,真丝滑!!!
Trivy 是一款高效灵活的开源安全扫描工具,支持容器镜像、文件系统、Kubernetes 等多目标扫描,具备快速、易用、集成性强等特点,适用于 DevSecOps 全流程安全检测。
319 0
|
7月前
|
人工智能 JavaScript 前端开发
Github 2024-10-28 开源项目周报 Top15
本周GitHub热门项目涵盖Svelte、Open Interpreter、PowerShell等,涉及Web开发、AI助手、自动化工具等领域,Python、JavaScript为主流语言,展现开源技术活跃生态。(239字)
733 19
|
7月前
|
人工智能 JavaScript 前端开发
Github 2024-11-04 开源项目周报 Top14
本周GitHub热门项目涵盖屏幕截图转代码、网页监控、低代码开发等。Python与TypeScript主导,亮点项目包括AI生成代码工具、开源社交应用Bluesky及机器人框架LeRobot,展现AI与自动化技术的快速发展趋势。
416 15
|
7月前
|
人工智能 JavaScript Docker
Github 2024-11-11 开源项目周报 Top15
本周GitHub热门项目涵盖多领域:Python与TypeScript领跑,包括屏幕截图转代码、本地文件共享、PDF处理、AI开发代理等。亮点项目如screenshot-to-code、LocalSend、OpenHands及Diagrams,兼具创新与实用性,广受开发者关注。
877 13
|
7月前
|
人工智能 算法 JavaScript
Github 2024-10-14 开源项目周报 Top14
本周GitHub热门项目共14个,Python项目占7席。涵盖算法实现、生成式AI、金融分析、目标检测等领域,包括TheAlgorithms系列、OpenBB金融平台、Ultralytics YOLO11、Manim动画框架等,展现开源技术多元发展态势。
286 8
下一篇
开通oss服务