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

Git Submodule克隆Bitbucket子模块时公钥权限错误求助

解决Bitbucket子模块SSH权限失败问题(Windows环境)

方案1:让Git使用系统OpenSSH客户端

Windows环境下,Git默认可能使用内置的SSH客户端,无法读取你已配置的系统SSH密钥。执行以下命令强制Git调用系统自带的OpenSSH:

git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"

执行后重新运行git submodule update --init,此时Git会复用你系统中已配置的Bitbucket访问密钥。

方案2:为子模块单独指定SSH密钥

如果方案1无效,可以为子模块单独配置密钥,且不影响版本库提交:

  1. 在主仓库根目录创建本地配置文件.gitmodules.local(这个文件不会被Git追踪),写入:
[submodule "submodules/B"]
    sshCommand = ssh -i C:/Path/To/Your/Private/Key
  1. 让Git加载这个本地配置:
git config --local include.path .gitmodules.local
  1. 同步子模块配置并更新:
git submodule sync --recursive
git submodule update --init

方案3:修正SSH密钥的权限(Windows关键)

Windows下私钥文件权限过宽会被SSH客户端拒绝,必须设置为仅当前用户可读:

  • 右键私钥文件(如~/.ssh/id_rsa)→ 属性 → 安全 → 高级
  • 点击“禁用继承”,删除所有非当前用户的权限条目
  • 仅保留当前用户的“读取”权限,保存设置

方案4:临时切换子模块URL为HTTPS(应急用)

如果需要快速解决,可以临时将子模块URL改为HTTPS格式,完成后再改回SSH:

# 临时替换为HTTPS
git submodule set-url submodules/B https://bitbucket.org/org/B.git
git submodule update --init
# 恢复SSH地址
git submodule set-url submodules/B git@bitbucket.org:org/B.git

注意:以上操作均针对Windows本地Git配置,不会影响Docker开发容器环境——容器内的Git会使用独立的配置,只要你不主动挂载本地.gitconfig或.ssh目录到容器内,就不会产生冲突。

内容的提问来源于stack exchange,提问作者hi im Bacon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:45:30