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

相关推荐
DogDaoDao7 小时前
【GitHub】NousResearch/Hermes-Agent 深度技术解析:自我进化的AI Agent新范式
人工智能·深度学习·程序员·大模型·github·ai编程·ai agent
nj01287 小时前
Linux 根分区占满排查与 SSH 暴力破解日志清理记录
linux·运维·ssh
laoli_coding8 小时前
如何将GitCode仓库的提交同步到 GitHub
github·gitcode
头发够用的程序员8 小时前
WSL2 Ubuntu 24.04 离线安装 Docker 全流程
linux·ubuntu·docker
web守墓人9 小时前
【AI编程】小米mimo模型400错误处理,以及roocode修复指南
linux·ubuntu·ai编程
坐吃山猪9 小时前
Python34_装饰器知识
开发语言·python·ubuntu
拙慕JULY9 小时前
GitHub Copilot 在 Vue.js 开发中的使用
vue.js·github·copilot
人生苦短1289 小时前
Ubuntu 系统常用操作命令大全
linux·chrome·ubuntu
草木红10 小时前
在Docker 建立一个SSH连接的 Ubuntu 容器
ubuntu·docker·ssh
zander25810 小时前
如何使用github进行团队开发项目
github·团队开发