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

Bitbucket Pipelines出现Host key verification failed错误求助

Host key verification failed 错误排查(Bitbucket Pipelines)

问题现象

使用Bitbucket Pipelines执行部署流程时,抛出Host key verification failed错误,导致部署中断。

当前配置

1. Bitbucket-pipelines.yml 内容

image: php:7.3.3
pipelines:
  branches:
    development:
      - step:
          name: Deploying in Development
          deployment: development
          caches:
            - node
          script:
            - apt-get update && apt-get install -y openssh-client
            - apt update && apt install -y unzip rsync wget
            - echo "Cloning Project" && ssh -tt $TABACK_SSH_USER@$DEV_SERVER "rm -rf $RELEASE_DIR_TMP && mkdir $RELEASE_DIR_TMP && cd $RELEASE_DIR_TMP && git clone --branch $BITBUCKET_BRANCH https://$REPO_CRED/trustanalytica/react-client.git $RELEASE_DIR_TMP"
            - echo "Copy env file" && ssh -tt $TABACK_SSH_USER@$DEV_SERVER "cp $APP_ROOT/env.$BITBUCKET_BRANCH.client $RELEASE_DIR_TMP/.env"
            - echo "Install Dependencies" && ssh -tt $TABACK_SSH_USER@$DEV_SERVER "cd $RELEASE_DIR_TMP && yarn install"
            - echo "Build" && ssh -tt $TABACK_SSH_USER@$DEV_SERVER "cd $RELEASE_DIR_TMP && yarn build"
            - echo "Deploy" && ssh -tt $TABACK_SSH_USER@$DEV_SERVER "cd $RELEASE_DIR_TMP && ./deploy.sh"

2. 部署服务器的SSH配置

  • .ssh/config 内容:
Host bitbucket.org
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  • 已将id_rsa.pub添加至服务器的authorized_keys和known_hosts;known_hosts内容:
bitbucket.org,3.136.180.187 ssh-rsa xxxxxxxxxxxxxxxxxxxxxx abc@xxx.com

3. Bitbucket端配置

  • 已配置仓库所需变量;
  • 已将服务器公网IP和主机名添加至仓库设置>流水线>SSH密钥>已知主机列表;
  • 已将服务器生成的id_rsa(私钥)和id_rsa.pub(公钥)分别粘贴到Bitbucket对应配置位置。

排查与解决步骤

1. 补全Pipelines容器内的主机密钥信任

你当前的SSH配置是在部署服务器上,但Bitbucket Pipelines运行在独立容器中,容器内没有预存部署服务器的主机密钥。当容器执行ssh $TABACK_SSH_USER@$DEV_SERVER时,会触发主机密钥验证失败。

解决方法:在Pipelines脚本的openssh-client安装步骤后,添加主机密钥扫描命令:

# 扫描并信任部署服务器的SSH主机密钥
- ssh-keyscan -H $DEV_SERVER >> ~/.ssh/known_hosts

若临时测试,也可在ssh命令中添加参数跳过验证(不推荐生产环境):

ssh -tt -o StrictHostKeyChecking=no $TABACK_SSH_USER@$DEV_SERVER "..."

2. 验证容器内SSH密钥可用性

Bitbucket会自动将配置的私钥加载到容器的~/.ssh/id_rsa,但需确认:

  • 私钥粘贴时无格式错误(如多余换行、空格);
  • 容器内~/.ssh目录权限合规,可添加脚本检查:
- ls -la ~/.ssh
- cat ~/.ssh/id_rsa

3. 检查部署服务器密钥权限

确保部署服务器的~/.ssh/authorized_keys已正确添加Bitbucket配置的公钥,且权限符合要求:

# 在部署服务器执行以下命令
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. 确认网络连通性

在Pipelines脚本中添加连通性测试,验证容器能访问部署服务器的22端口:

- ping -c 3 $DEV_SERVER
- telnet $DEV_SERVER 22

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:23:27