当前位置: 首页 > news >正文

【已解决】GitHub SSH 连接失败解决方案:Permission Denied (publickey) 错误修复指南

      • 1. 测试 SSH 连接是否成功
      • 2. `Permission Denied (publickey)` 错误解析
      • 3. 检查 SSH 密钥是否已生成
      • 4. 将 SSH 公钥添加到 GitHub
      • 5. 测试 SSH 连接
      • 6. 确保使用正确的 SSH 密钥
      • 7. 重新尝试 `git clone`
      • 总结

在使用 Git 进行版本控制时,有时我们会遇到以下错误提示:

Cloning into 'App'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.

1. 测试 SSH 连接是否成功

首先,通过 SSH 测试是否能成功连接到 GitHub。可以使用以下命令:

ssh -T git@github.com

如果连接不成功,你可能会看到如下报错:

ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

如果是这种情况,你可以尝试使用 ping github.com 来检测网络是否通畅。如果你在国内,可能需要使用代理(如全局代理 Tun)来解决网络问题。

ping test

2. Permission Denied (publickey) 错误解析

如果你遇到 Permission denied (publickey) 错误,通常意味着 GitHub 没有正确识别你的 SSH 密钥。这个问题通常是由于 SSH 密钥没有正确配置或没有被添加到 GitHub 账户导致的。接下来我们来一步步解决。

3. 检查 SSH 密钥是否已生成

  1. 查看是否有 SSH 密钥

    打开 C:\Users\xxxx\.ssh 目录,检查是否有 id_rsaid_rsa.pub 文件。如果这些文件已经存在,说明你已有 SSH 密钥。否则,你需要生成一个新的 SSH 密钥对。

  2. 生成新的 SSH 密钥

    如果你没有现成的 SSH 密钥,可以通过以下命令生成新的密钥对:

    ssh-keygen -t rsa -b 4096 -C "xxxxxxxxx.com"
    

    这时系统会提示你选择密钥的存储位置,通常按 Enter 选择默认路径(~/.ssh/id_rsa)。你也可以设置密钥密码,或者直接按 Enter 跳过此步骤。

    SSH keygen

4. 将 SSH 公钥添加到 GitHub

生成 SSH 密钥后,你需要将公钥添加到 GitHub 才能正常进行身份验证。

  1. 查看公钥

    打开 id_rsa.pub 文件,复制其中的公钥内容(以 ssh-rsa 开头,以你的电子邮件结尾)。

  2. 将公钥添加到 GitHub

    登录到 GitHub,并按照以下步骤操作:

    • 点击右上角的头像,选择 Settings(设置)。
    • 在左侧导航栏中选择 SSH and GPG keys
    • 点击 New SSH key 按钮。
    • Title 中为你的密钥取个名字,并将刚才复制的公钥粘贴到 Key 栏中。
    • 点击 Add SSH key 保存。

    GitHub Add SSH Key

5. 测试 SSH 连接

完成公钥添加后,使用以下命令再次测试 SSH 连接:

ssh -T git@github.com

如果一切顺利,你应该看到如下信息:

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

此时说明 SSH 配置成功,可以进行 Git 操作了。

SSH test

6. 确保使用正确的 SSH 密钥

如果你有多个 SSH 密钥,你可能需要显式指定要使用的密钥。可以使用以下命令来指定:

ssh -i ~/.ssh/id_rsa -T git@github.com

7. 重新尝试 git clone

按照上述步骤操作后,重新运行 git clone 命令,此时应该能够正常克隆仓库:

git clone git@github.com:username/repository.git

此时,Git 连接应该没有问题,并且可以顺利完成上传和下载操作。

Git clone

总结

通过以上步骤,解决了 GitHub 的 Permission denied (publickey) 错误。主要步骤包括生成 SSH 密钥、将公钥添加到 GitHub 账户以及测试 SSH 连接等。按照这些操作后,你应该能够顺利使用 SSH 协议进行 Git 操作。

http://www.lryc.cn/news/593858.html

相关文章:

  • ant+Jmeter+jenkins接口自动化,如何实现把执行失败的接口信息单独发邮件?
  • XILINX JESD204B/C IP的AXI配置
  • 【HarmonyOS】ArkUI - 自定义组件和结构重用
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Python基础-列表
  • Python趣味算法:借书方案知多少 | 排列组合穷举法详解
  • 06 51单片机之矩阵键盘
  • Laravel 框架NOAUTH Authentication required 错误解决方案-优雅草卓伊凡
  • Autosar RTE实现观测量生成-基于ETAS软件
  • MYSQL:从增删改查到高级查询
  • 技术演进中的开发沉思-40 MFC系列:多线程协作
  • [特殊字符] 小程序 vs 智能体:下一代应用开发,谁主沉浮?
  • 社交圈子系统开源社交源码 / 小程序+H5+APP 多端互通的底层技术分析
  • 分享如何在保证画质的前提下缩小视频体积实用方案
  • 敏捷开发的历史演进:从先驱实践到全域敏捷(1950s-2025)
  • Hiredis 构建 Redis 命令实战指南
  • 音视频学习(四十一):H264帧内压缩技术
  • 【AI】文生图文生视频
  • 吴恩达机器学习笔记(3)—线性代数回顾(可选)
  • 17.TaskExecutor与ResourceManager交互
  • 微服务雪崩防护最佳实践之sentinel
  • ThinkSound:阿里开源首个“会思考”的音频生成模型——从“看图配音”到“听懂画面”的技术跃迁
  • SpringBoot 整合 Langchain4j 实现会话记忆存储深度解析
  • Node.js 与 Java 性能对比
  • 【Kafka】深入理解 Kafka MirrorMaker2 - 实战篇
  • Node.js v20.19.4 (LTS)升级
  • Python模块和包
  • 【PTA数据结构 | C语言版】邻接矩阵表示的图基本操作
  • simulink系列之模型接口表生成及自动连线脚本
  • LeetCode|Day19|14. 最长公共前缀|Python刷题笔记