求助:Atlassian Pipelines部署时Host key验证失败问题
问题解决:Atlassian Pipelines SCP部署出现Host key verification failed错误
错误Host key verification failed的本质是Bitbucket Pipelines运行环境未信任目标QA服务器的SSH主机密钥,导致连接被拒绝。以下是具体排查和解决步骤:
1. 手动注入目标服务器的主机密钥
在本地终端执行命令,获取目标服务器的主机密钥(替换为你的服务器IP/域名):
ssh-keyscan -H your-qa-server-ip-or-domain
会输出类似内容:
#your-qa-server-ip-or-domain:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5 your-qa-server-ip-or-domain ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...
将这段完整输出添加到scp-deploy pipe的KNOWN_HOSTS变量中:
pipe: atlassian/scp-deploy:1.4.1 variables: USER: ${QA_SERVER_USER} # 建议重命名变量,避免与系统变量冲突 SERVER: ${QA_SERVER_HOST} REMOTE_PATH: '/home/myuser/' LOCAL_PATH: './MyApp.jar' KNOWN_HOSTS: | #your-qa-server-ip-or-domain:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5 your-qa-server-ip-or-domain ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...
2. 检查SSH密钥配置
- 确认仓库
admin/pipelines/ssh-keys页面粘贴的私钥完整:必须包含-----BEGIN RSA PRIVATE KEY-----开头和-----END RSA PRIVATE KEY-----结尾,中间内容无换行丢失或多余空格。 - 验证目标服务器的
/home/myuser/.ssh/authorized_keys文件已添加对应公钥,且文件权限为600,.ssh目录权限为700。
3. 验证变量加载正确性
在Deploy步骤的script中添加变量打印,确认配置的服务器信息已正确加载:
script: - echo "Server: ${QA_SERVER_HOST}, User: ${QA_SERVER_USER}" - ls -R $BITBUCKET_CLONE_DIR - pipe: atlassian/scp-deploy:1.4.1 ...
4. 检查目标目录权限
用相同的SSH私钥和用户登录目标服务器,执行touch /home/myuser/test.txt,确认该用户对/home/myuser/目录有写入权限。
内容的提问来源于stack exchange,提问作者Eiron
相关产品推荐
相关产品推荐

