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

BitBucket Pipeline部署至DigitalOcean Droplet(Ubuntu)失败求助

排查BitBucket Pipeline部署至DigitalOcean Droplet失败的方案

1. 核对SSH私钥配置与Pipeline脚本

  • 确认BitBucket中配置的SSH_PRIVATE_KEY是完整的私钥内容,包含开头的-----BEGIN RSA PRIVATE KEY-----和结尾的-----END RSA PRIVATE KEY-----,无多余换行或空格
  • 确保bitbucket-pipelines.yml中私钥的处理逻辑正确,示例核心片段:
    pipelines:
      default:
        - step:
            name: Deploy to Droplet
            script:
              - mkdir -p ~/.ssh
              - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
              - chmod 600 ~/.ssh/id_rsa
              - ssh-keyscan $SSH_HOST >> ~/.ssh/known_hosts
              - ssh $SSH_USER@$SSH_HOST "cd /your/deploy/dir && git pull"
    
    重点:必须给私钥设置600权限(SSH会拒绝权限过宽的密钥);必须提前扫描目标主机指纹到known_hosts,避免Pipeline出现交互式确认提示

2. 检查服务器端SSH与权限配置

  • 登录DigitalOcean Droplet,编辑/etc/ssh/sshd_config确认:
    • PubkeyAuthentication yes(开启公钥认证)
    • AuthorizedKeysFile .ssh/authorized_keys(指定公钥文件路径)
    • 重启SSH服务生效:sudo systemctl restart sshd
  • 修正~/.ssh目录与authorized_keys文件权限:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
    SSH会忽略权限不符合要求的公钥文件

3. 加调试日志定位问题

  • 在Pipeline部署步骤开头添加SSH verbose模式命令,输出详细连接日志:
    - ssh -v $SSH_USER@$SSH_HOST "whoami"
    
    通过日志可以明确是密钥验证失败、主机指纹不匹配还是目录权限问题

4. 确认部署目录权限

  • 确保服务器上的部署目录对SSH_USER有读写权限,比如部署目录为/var/www/app,执行:
    sudo chown -R $SSH_USER:$SSH_USER /var/www/app
    

5. 检查Pipeline镜像依赖

  • 如果使用的Pipeline基础镜像缺少SSH客户端,需提前安装:
    script:
      - apt-get update && apt-get install -y openssh-client
      # 后续部署命令
    

内容的提问来源于stack exchange,提问作者ศิรภพ ทวีโชค

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:15:27