git clone git@github.com: Permission denied (publickey)权限拒绝问题
一、前言最近在部署detectron2Facebook开源的目标检测框架时执行克隆命令git clone gitgithub.com:facebookresearch/detectron2.git终端直接抛出如下错误Cloning into detectron2... gitgithub.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_emailexample.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公钥内容执行命令复制公钥文本后续需粘贴到GitHubcat ~/.ssh/id_ed25519.pub复制输出的全部内容以ssh-ed25519开头你的邮箱结尾的完整字符串。步骤5将公钥添加到GitHub账户打开GitHub官网登录后点击右上角头像 →Settings设置在左侧菜单找到SSH and GPG keys→ 点击New SSH keyTitle栏填写标识如“工作机-2026”Key栏粘贴复制的公钥内容点击Add SSH key完成添加若开启2FA需验证身份。步骤6验证SSH连接执行如下命令验证配置是否成功ssh -T gitgithub.com若终端输出Hi [你的GitHub用户名]! Youve successfully authenticated, but GitHub does not provide shell access.说明SSH配置成功。步骤7重新克隆仓库此时再执行原SSH克隆命令即可正常克隆git clone gitgithub.com:facebookresearch/detectron2.git四、总结报错核心原因本地SSH公钥未配置到GitHub账户导致GitHub无法验证身份拒绝SSH连接。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2471147.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!