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

相关推荐
android_cai_niao2 小时前
给Git项目添加多个远程仓库
git·gitee·github
Elivs.Xiang2 小时前
ubuntu20中安装gitlab
linux·ubuntu·gitlab
zhensherlock2 小时前
Protocol Launcher 系列:Working Copy 提交与同步全攻略
javascript·git·typescript·node.js·自动化·github·js
MuzySuntree2 小时前
Ubuntu 下 Maven 构建 Spring Boot 项目报错 release version 17 not supported 解决方案
spring boot·ubuntu·maven
相思难忘成疾3 小时前
Linux SSH免密登录实验:基于Xshell的公钥认证机制
linux·运维·ssh·rhce
SiYuanFeng14 小时前
新手学Git:如何把本地 Git 项目上传到 GitHub
git·github
闫利朋14 小时前
Ubuntu 24.04 桌面安装向日葵完整指南
linux·运维·ubuntu
勤自省17 小时前
《RDK X5 ROS 2 Humble 安装与验证:从零到 Hello World》
windows·ubuntu·ssh·ros2
桌面运维家19 小时前
中小学IDV云桌面vDisk挂载部署方案
github