Go拉取Bitbucket私有仓库时SSH密钥无法使用的问题求助
解决方案
1. 配置GOPRIVATE环境变量
Go默认会通过公共代理(proxy.golang.org)拉取模块,但私有Bitbucket仓库无法通过公共代理访问,必须让Go直接走Git拉取:
go env -w GOPRIVATE=bitbucket.<org>.com
替换<org>为你的实际组织名,这条命令会永久修改Go的环境配置。
2. 确保Git的insteadOf配置全局生效
你已经在~/.gitconfig.user里配置了insteadOf,但需要确认Git能加载这个配置:
- 检查配置是否被读取:
git config --get url."ssh://git@bitbucket.<org>.com/".insteadOf - 如果没有输出,需要在
~/.gitconfig中添加包含规则,让Git加载你的用户配置文件:[include] path = ~/.gitconfig.user
或者直接将insteadOf配置写入~/.gitconfig文件。
3. 确保SSH私钥被Git进程正确使用
Go调用Git时可能没有自动加载你的私钥,可通过以下方式解决:
- 临时验证:运行
go mod tidy时指定私钥路径:
替换GIT_SSH_COMMAND="ssh -i ~/.ssh/your_private_key" go mod tidyyour_private_key为你的实际私钥文件名(比如id_rsa)。 - 永久配置:在
~/.ssh/config中添加针对Bitbucket的Host规则,让Git默认使用指定私钥:Host bitbucket.<org>.com IdentityFile ~/.ssh/your_private_key User git
4. 清理Go模块缓存
如果之前拉取失败产生了缓存,先清理缓存再重试:
go clean -modcache go mod tidy
内容的提问来源于stack exchange,提问作者klaypigeon
相关产品推荐
相关产品推荐

