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文件权限:
SSH会忽略权限不符合要求的公钥文件chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
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,提问作者ศิรภพ ทวีโชค
相关产品推荐
相关产品推荐

