You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go Mod访问Bitbucket私有仓库失败的排查与解决求助

Go Mod 无法通过SSH访问Bitbucket私有仓库的解决方法

问题核心

你能直接用git clone通过SSH拉取Bitbucket仓库,但Go模块工具(go mod tidy/download)无法正常工作,本质是Go没正确复用你的SSH配置,尤其是带密码的密钥需要ssh-agent支持才能自动完成认证。

解决步骤

1. 让ssh-agent托管带密码的SSH密钥

因为密钥设置了密码,Go模块工具不会主动弹出密码输入框,需要借助ssh-agent帮你管理密钥认证:

# 启动ssh-agent(终端会话首次运行时执行)
eval "$(ssh-agent -s)"
# 添加你的私钥到agent,输入一次密码后后续操作自动复用
ssh-add ~/.ssh/你的私钥文件名

如果是macOS,还可以配置自动加载到系统钥匙串,避免每次重启终端都要重复添加:
在~/.ssh/config中追加以下内容:

Host bitbucket.xxx
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/你的私钥文件名

2. 修正GOPRIVATE配置

不需要在GOPRIVATE中添加端口号,简化配置为:

go env -w GOPRIVATE=bitbucket.xxx

3. 强制Git(Go依赖Git完成拉取)用SSH访问Bitbucket

在~/.gitconfig中添加以下配置,将所有针对Bitbucket的HTTPS请求自动转换为SSH协议,彻底避免Go模块工具默认使用HTTPS:

[url "ssh://git@bitbucket.xxx:9022/"]
  insteadOf = https://bitbucket.xxx/

4. 验证配置有效性

执行以下命令测试模块拉取是否正常:

go mod download bitbucket.xxx/yyy/zzz

如果仍然失败,可以开启Git调试日志查看具体错误细节:

GIT_TRACE=1 go mod tidy

额外排查项

  • 检查~/.ssh/config的Host配置是否完整:
Host bitbucket.xxx
  HostName bitbucket.xxx
  Port 9022
  User git
  IdentityFile ~/.ssh/你的私钥文件名
  • 确认Bitbucket账号已添加对应公钥,且该公钥拥有目标仓库的访问权限
  • IntelliJ中需同步本地环境变量:打开Settings -> Go -> Go Modules,确保GOPRIVATE已正确加载,且启用了Go Modules集成

内容的提问来源于stack exchange,提问作者Kokizzu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:15:41