向GitHub推送代码出现Can't connect to any URI (not authorized)错误,是否必须生成SSH密钥?
核心结论
不需要必须生成SSH密钥即可完成推送,GitHub支持HTTPS和SSH两种合法推送认证方式,Can't connect to any URI (not authorized) error报错本质是认证信息校验失败,和选择的认证方式无直接关联。
常见报错诱因
- 使用HTTPS方式推送时,仍使用GitHub账号密码作为认证凭据:GitHub自2021年8月起已停止支持账号密码形式的HTTPS推送认证,需使用个人访问令牌(PAT)替代密码
- Eclipse本地存储的GitHub认证凭据过期、填写错误
- 本地仓库配置的远程仓库地址有误,存在用户名、仓库名拼写错误
修复方案
方案1:HTTPS方式(无需生成SSH密钥,操作更简单)
- 登录GitHub账号,进入
Settings>Developer settings>Personal access tokens>Tokens (classic),点击生成新的经典令牌 - 按需设置令牌过期时间,勾选
repo类目下的所有权限,生成后复制令牌内容(仅显示一次,需妥善保存) - 打开Eclipse配置:
Window>Preferences>General>Security>Secure Storage,删除已存储的所有GitHub相关旧凭据 - 重新执行推送操作,提示输入认证信息时,用户名填写GitHub账号用户名,密码栏粘贴刚才生成的PAT即可完成推送
方案2:SSH方式(需生成SSH密钥,无需频繁更新认证信息)
- 本地终端执行命令生成SSH密钥对:
ssh-keygen -t ed25519 -C "你的GitHub绑定邮箱",全程按回车使用默认配置即可 - 打开用户目录下
.ssh文件夹中的id_ed25519.pub公钥文件,复制全部内容 - 登录GitHub进入
Settings>SSH and GPG keys,点击新增SSH密钥,粘贴公钥内容后保存 - 回到Eclipse,修改对应本地仓库的远程地址为SSH格式,重新推送即可完成认证
内容的提问来源于stack exchange,提问作者Prateek Kumar
相关产品推荐
相关产品推荐

