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
相关产品推荐
相关产品推荐

