Go构建及相关命令执行时Git权限错误原因咨询
排查Go构建时Git权限拒绝问题
可能的原因及解决步骤:
Go模块使用的远程协议与本地克隆不一致
你手动克隆时用了HTTP/SSH,但Go mod拉取依赖时可能用了另一种协议。用go list -m -mod=readonly <你的模块路径>查看模块的远程URL,确认是否和本地仓库的远程地址匹配。如果不匹配,可通过go mod edit -replace调整模块的拉取路径。SSH密钥未被Go进程正确加载
macOS Monterey的SSH代理可能未自动加载密钥,或者Go进程未继承SSH_AUTH_SOCK环境变量:- 手动添加密钥到代理:
ssh-add -K ~/.ssh/id_rsa(替换为你的密钥文件名) - 检查环境变量:
echo $SSH_AUTH_SOCK,确保构建进程能获取到该变量值 - 用
GIT_SSH_COMMAND="ssh -v" go build运行构建,查看SSH调试日志,定位权限失败的具体环节
- 手动添加密钥到代理:
Go模块缓存存在异常
旧的缓存可能保留了错误的权限信息,执行go clean -modcache清除缓存后,重新运行go mod tidy拉取依赖。子模块权限问题
若项目包含子模块,检查子模块的远程URL对应的权限是否已配置。手动克隆子模块测试是否能正常访问,确认后再重新构建。全局Git配置冲突
查看~/.gitconfig中的URL替换规则(如url."ssh://git@gitlab.com/".insteadOf),确保这些规则没有干扰Go模块的拉取路径。
内容的提问来源于stack exchange,提问作者Foobar
相关产品推荐
相关产品推荐

