作为GitHub协作者执行flutter pub get时遇Permission Denied(publickey)错误
问题原因分析与解决建议:Flutter pub get 出现 Git 公钥权限拒绝错误
问题原因
- 公钥未正确生效:虽已将公钥添加至GitHub账户,但可能存在公钥与当前机器不匹配、GitHub未正确识别公钥的情况。
- 依赖仓库权限不足:项目的
pubspec.yaml中可能引用了其他私有GitHub仓库,你仅拥有主项目的协作者权限,无这些依赖仓库的访问权限。 - Git SSH配置异常:若本地存在多组SSH密钥,Git可能未使用对应GitHub账户的密钥,导致权限验证失败。
- GitHub权限未同步:刚被添加为协作者时,GitHub权限缓存可能存在延迟,尚未完成权限同步。
解决建议
1. 验证SSH公钥有效性
执行以下命令测试与GitHub的SSH连接:
ssh -T git@github.com
若返回Hi [你的GitHub用户名]! You've successfully authenticated, but GitHub does not provide shell access.,说明公钥正常;若仍报错,需重新生成并添加正确的公钥到GitHub账户。
2. 检查私有依赖仓库权限
打开项目的pubspec.yaml,查看所有git类型的依赖,确认每个私有仓库你都已被添加为协作者。若存在未授权的依赖仓库,联系对应仓库管理员添加权限。
3. 配置Git SSH密钥指定(多密钥场景)
若本地有多个SSH密钥,需配置~/.ssh/config(Windows系统路径为C:\Users\[你的用户名]\.ssh\config),指定GitHub使用对应密钥:
Host github.com HostName github.com User git IdentityFile ~/.ssh/你的私钥文件名(例如id_rsa)
配置完成后,再次执行ssh -T git@github.com验证连接。
4. 等待权限同步或刷新会话
刚添加协作者权限后,GitHub可能需要1-5分钟完成权限同步。若等待后仍报错,可退出GitHub账户重新登录,再执行flutter pub get。
5. 临时切换为HTTPS地址
若SSH方式始终无法解决,可将仓库远程地址改为HTTPS,或修改pubspec.yaml中Git依赖的地址为HTTPS格式。执行flutter pub get时,输入GitHub用户名和个人访问令牌(推荐)或密码完成验证。
内容的提问来源于stack exchange,提问作者numan kaya
相关产品推荐
相关产品推荐

