Ubuntu 使用 GitHub SSH 克隆时报 Permission denied (publickey) 解决方案

一、问题现象

在 Ubuntu 服务器执行:

git clone git@github.com:账户/project.git

报错:

git@github.com: Permission denied (publickey).

fatal: Could not read from remote repository.


二、问题原因

该错误表示:

👉 当前服务器没有可被 GitHub 识别的 SSH 公钥

GitHub 在使用 SSH 协议时,不使用账号密码,而是通过:

  • 本地私钥(服务器)
  • GitHub 上保存的公钥

进行认证。

只要这两者不匹配,就会出现:

Permission denied (publickey)


三、解决步骤

1. 检查是否已有 SSH key

ls -al ~/.ssh

如果存在:

id_ed25519

id_ed25519.pub

说明已经生成过密钥。


2. 如果没有,生成 SSH key

ssh-keygen -t ed25519 -C "your_email@example.com"

说明:

  • -C 后面的邮箱只是备注(可随意写)
  • 一路回车即可

3. 启动 ssh-agent 并加载私钥

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/id_ed25519


4. 获取公钥内容

cat ~/.ssh/id_ed25519.pub

复制输出的整行内容


5. 添加到 GitHub

登录 GitHub:

路径:

头像 → Settings → SSH and GPG keys → New SSH key

填写:

  • Title:自定义(如 ubuntu-server)
  • Key:粘贴刚才复制的公钥

点击 Add SSH key


6. 测试 SSH 连接

ssh -T git@github.com

成功输出:

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


7. 重新克隆仓库

git clone git@github.com:账户名/projects.git


四、常见坑

1. 公钥没有添加到 GitHub

最常见原因


2. 添加错账号

确保登录的是正确的 GitHub 账号


3. 没有加载私钥

ssh-add ~/.ssh/id_ed25519


4. 权限不正确

chmod 700 ~/.ssh

chmod 600 ~/.ssh/id_ed25519

chmod 644 ~/.ssh/id_ed25519.pub


5. 使用了 sudo 导致环境不同

sudo git clone ...

问题:

  • root 用户没有 SSH key
  • 导致认证失败

正确做法:

git clone ...


五、HTTPS 与 SSH 对比

方式 优点 缺点
HTTPS 简单 每次可能需要认证
SSH 一次配置,长期使用 初次配置稍复杂

六、总结

该问题核心:

SSH 公钥未正确配置到 GitHub

解决流程:

生成密钥 → 添加公钥 → 测试连接 → 重新 clone

相关推荐
鹏毓网络科技1 天前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
嘻嘻仙人2 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github
白鲸开源2 天前
Apache SeaTunnel Zeta Engine 的 Basic Auth 是怎么工作的?
java·vue.js·github
白鲸开源2 天前
一文读懂DolphinScheduler插件机制:如何轻松扩展任务类型与数据源
java·架构·github
徐小夕3 天前
万字拆解 JitWord:企业级实时协同文档底层架构 + 大模型 AI 融合完整实践
前端·vue.js·github
码流怪侠3 天前
【GitHub】Ponytail:给 AI 编码代理植入“懒人资深开发者“灵魂的开源插件深度拆解
程序员·github·ai编程
齐翊3 天前
怎么确认 AI 看懂了你的提示词?
人工智能·github·ai编程
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
李小庆3 天前
Sowork AI Agent 编程助手教程 :第一章 Python环境搭建与Sowork项目克隆学习目标
github
OpenTiny社区4 天前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github