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

Docker容器内yarn install无法访问Bitbucket私有仓库的问题咨询

问题排查与解决步骤

针对你遇到的Docker容器内无法通过SSH拉取Bitbucket私有仓库、yarn安装依赖失败(错误码128)的问题,按以下步骤排查:

1. 检查SSH密钥权限

SSH对私钥权限要求严格,必须限制为仅当前用户可读。容器内复制密钥后,执行以下命令修正权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

同时确认容器内执行命令的用户,是否对应~/.ssh目录的所属用户——如果用root用户执行,要确保密钥放在/root/.ssh而非其他用户目录下。

2. 预配置Bitbucket主机指纹

非交互式环境(如Jenkins流水线)中,SSH首次连接陌生主机时会因要求确认指纹而失败。在容器内执行以下命令,将Bitbucket主机指纹添加到已知主机列表:

ssh-keyscan -H bb.repo-to-connect-to.com foo.bar.com >> ~/.ssh/known_hosts

也可临时禁用主机指纹检查(仅建议测试用),在~/.ssh/config中添加:

Host bb.repo-to-connect-to.com foo.bar.com
    StrictHostKeyChecking no

3. 验证yarn执行的用户上下文

执行rails webpacker:install时,yarn可能以不同于当前用户的身份运行,导致无法读取~/.ssh下的密钥。可以:

  • 明确指定HOME目录执行命令:
    HOME=/path/to/user-home RAILS_ENV=test rails webpacker:install
    
  • 切换到对应用户后执行:
    su - target-user -c "RAILS_ENV=test rails webpacker:install"
    

4. 手动验证SSH连接有效性

在容器内直接测试与Bitbucket的SSH连接,确认密钥权限和仓库访问权限:

ssh -T git@bb.repo-to-connect-to.com
ssh -T git@foo.bar.com

如果返回logged in as [username]则密钥有效;若提示权限拒绝,需检查Bitbucket后台是否将该公钥添加到对应仓库的访问权限列表中(尤其是foo-app私有仓库)。

5. 排查容器网络连通性

确认容器能访问Bitbucket的7999端口:

telnet bb.repo-to-connect-to.com 7999

若连接失败,检查容器网络模式(如bridge模式是否允许出站访问)、Jenkins服务器防火墙规则是否限制了容器对Bitbucket端口的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:03:10