登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
报错解决:git clone git@github.com: Permission denie ...
报错解决:git clone git@github.com: Permission denied (publickey)权限拒绝问题
[ 复制链接 ]
韶侪
昨天 06:30
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
一、前言
最近在部署detectron2(Facebook开源的目标检测框架)时,执行克隆命令:
git clone git@github.com:facebookresearch/detectron2.git
复制代码
终端直接抛出如下错误:
Cloning into 'detectron2'...
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.
复制代码
起初以为是仓库权限问题,但detectron2是公开仓库,任何人都可克隆,排查后发现核心是SSH身份验证环节出了问题。本文将完整还原问题分析和解决过程,帮助遇到同类报错的开发者少走弯路。
二、问题分析
要理解这个报错,首先要明白Git通过SSH协议访问GitHub的底层逻辑:
SSH验证原理
:GitHub通过SSH密钥对(公钥+私钥)验证用户身份——本地生成密钥对后,将公钥配置到GitHub账户,克隆/推送代码时,GitHub服务器会校验本地私钥与账户公钥是否匹配,匹配成功才允许操作。
报错本质
:Permission denied (publickey) 意味着GitHub服务器未在你的账户中找到匹配的SSH公钥,无法确认你的身份,因此拒绝了SSH连接请求。
常见诱因
:
本地未生成SSH密钥对;
生成了密钥对但未将公钥添加到GitHub账户;
SSH agent未启动,或未将私钥添加到agent中;
密钥文件路径/权限配置错误(如私钥权限过宽)。
三、解决方案
针对该问题,提供两种解决方案:「
快速临时方案
」(
改用HTTPS克隆
)和「
长期根治方案
」(
配置SSH密钥
),可根据实际需求选择。
方案1:快速解决——改用HTTPS协议克隆(无需配置SSH)
这是最便捷的临时方案,跳过SSH验证,直接使用HTTPS协议克隆仓库,适合临时克隆公开仓库的场景。
执行如下命令即可:
git clone https://github.com/facebookresearch/detectron2.git
复制代码
注意事项:
如果克隆时提示输入GitHub账号密码:
账号填写你的GitHub用户名;
若开启了GitHub两步验证(2FA),密码
不能填登录密码
,需使用「个人访问令牌(PAT)」代替。
生成PAT的步骤:GitHub首页 → 右上角头像 → Settings → Developer settings → Personal access tokens → Generate new token → 勾选repo权限 → 生成后复制令牌(仅显示一次,需妥善保存)。
方案2:长期根治——配置SSH密钥(推荐)
如果需要长期使用SSH协议操作GitHub(如频繁推送代码、克隆私有仓库),建议配置SSH密钥,一劳永逸解决身份验证问题,步骤如下:
步骤1:检查本地是否已有SSH密钥
首先查看本地.ssh目录下是否有现成的密钥文件(如id_rsa.pub/id_ed25519.pub,.pub后缀为
公钥
,无后缀为
私钥
):
ls -al ~/.ssh
复制代码
如果输出中有id_ed25519.pub或id_rsa.pub,说明已有密钥对,可跳过步骤2;若为空,需生成新密钥。
步骤2:生成新的SSH密钥(无密钥时执行)
使用ssh-keygen生成密钥对(推荐使用更安全的ed25519算法),替换为你的GitHub注册邮箱:
ssh-keygen -t ed25519 -C "your_email@example.com"
复制代码
执行后按提示操作:
按回车默认保存路径(~/.ssh/id_ed25519),无需修改;
可选设置密钥密码(按回车跳过即可,设置后每次使用SSH需输入密码,更安全)。
步骤3:启动SSH Agent并添加私钥
SSH Agent用于管理私钥,避免每次操作都输入密钥密码,执行如下命令:
# 启动ssh-agent
eval "$(ssh-agent -s)"
# 添加私钥(若为rsa密钥,替换为id_rsa)
ssh-add ~/.ssh/id_ed25519
复制代码
步骤4:复制SSH公钥内容
执行命令复制公钥文本(后续需粘贴到GitHub):
cat ~/.ssh/id_ed25519.pub
复制代码
复制输出的全部内容(以ssh-ed25519开头,你的邮箱结尾的完整字符串)。
步骤5:将公钥添加到GitHub账户
打开GitHub官网,登录后点击右上角头像 → Settings(设置);
在左侧菜单找到SSH and GPG keys → 点击New SSH key;
Title栏填写标识(如“工作机-2026”),Key栏粘贴复制的公钥内容;
点击Add SSH key完成添加(若开启2FA,需验证身份)。
步骤6:验证SSH连接
执行如下命令验证配置是否成功:
ssh -T git@github.com
复制代码
若终端输出Hi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH配置成功。
步骤7:重新克隆仓库
此时再执行原SSH克隆命令,即可正常克隆:
git clone git@github.com:facebookresearch/detectron2.git
复制代码
四、总结
报错核心原因
:本地SSH公钥未配置到GitHub账户,导致GitHub无法验证身份,拒绝SSH连接。
方案选择建议
:临时克隆公开仓库选HTTPS方式(快速),长期开发/操作私有仓库选SSH配置(便捷、安全)。
额外注意点
:配置SSH后若仍报错,可检查密钥文件权限(私钥需设为600)、SSH Agent是否正常运行,或更换RSA算法重新生成密钥。
希望本文能帮助大家快速解决git@github.com: Permission denied (publickey)问题,如果你有其他解决思路,欢迎在评论区交流~
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
git
报错
解决
clone
github
相关帖子
你的Git提交记录是“代码史诗”,还是“只有上帝能看懂的天书”?
【GitHub每日速递 20251225】45000 人共建!MDN 免费 Web 文档,助你开启开发新征程
解决phpstudy无法启动MySQL服务的三种方法小结(转载)
【问题解决】关于log4j与logback依赖冲突的解决方案
基于 Git 某个分支创建一个全新的仓库(GitHub / GitLab)
解决Gemini无法进入显示 “Google Al Studio 和 Gemini AP| 的可用区域” 的问题
【Azure Web App】Github Action部署Jar包到App Service报400错误
解决java客户端连接ssh失败问题
【GitHub每日速递 20260108】告别云服务弊端,Memos隐私至上自托管笔记服务来袭!
Git使用经验总结9-Git提交关联到Issue
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
你的Git提交记录是“代码史诗”,还是“只有上帝能看懂的天书”?
2
243
能杜孱
2025-12-25
安全
【GitHub每日速递 20251225】45000 人共建!MDN 免费 Web 文档,助你开启开发新征程
2
761
任静柔
2025-12-25
安全
解决phpstudy无法启动MySQL服务的三种方法小结(转载)
1
245
劳暄美
2025-12-25
业界
【问题解决】关于log4j与logback依赖冲突的解决方案
0
867
梭净挟
2025-12-29
业界
基于 Git 某个分支创建一个全新的仓库(GitHub / GitLab)
0
1023
阕阵闲
2025-12-29
安全
解决Gemini无法进入显示 “Google Al Studio 和 Gemini AP| 的可用区域” 的问题
1
7
挫莉虻
2026-01-01
业界
【Azure Web App】Github Action部署Jar包到App Service报400错误
0
387
客臂渐
2026-01-04
业界
解决java客户端连接ssh失败问题
1
958
师悠逸
2026-01-06
安全
【GitHub每日速递 20260108】告别云服务弊端,Memos隐私至上自托管笔记服务来袭!
0
933
柏雅云
2026-01-08
安全
Git使用经验总结9-Git提交关联到Issue
0
433
岳娅纯
2026-01-09
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
签约作者
程序园优秀签约作者
发帖
韶侪
昨天 06:30
关注
0
粉丝关注
16
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845358
4
xiangqian
638210
5
韶又彤
9992
6
宋子
9978
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9946
查看更多
今日好文热榜
941
搭建你的个人图床
192
obet快速修改scn/resetlogs恢复数据库(缺少
246
Thread 类的基本用法、Java 线程的几种状态
994
MQTT状态管理Vuex全局状态管理
127
初识Tauri
924
源码独立部署成企业数据安全新选择 广州旗
140
一款基于 .NET 9 构建的企业级 Web RBAC 快
361
2026.1.9日闲话:DAG 计数
433
Git使用经验总结9-Git提交关联到Issue
270
盘点北京地区都有哪些值得推荐的陪诊机构
796
ftrace可视化工具迎来重大升级
740
2026年质量领先的装配式内装品牌盘点:华耐
877
Flink源码阅读:Task数据交互
903
公众号推荐机制整理:科技号怎么把社交流量
336
混合检索(Hybrid Search):多模态检索实
102
12个JS核心,搞懂这些直接起飞!
270
MAF快速入门(11)并行工作流
365
vxe-table 复制单元格内容总会在最后加个换
724
Python描述器(Descriptor)深度解析:OOP
267
AI生成式技术驱动企业获客革新:广州旗引科