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

Bitbucket Pipeline连接EC2服务器报错:ssh_askpass及主机密钥验证失败

错误含义解析
  • ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory:Bitbucket Pipeline运行在非交互式环境中,当SSH需要确认新主机的密钥时,无法弹出交互确认窗口,会尝试调用ssh-askpass工具,但该工具未在Pipeline环境中安装,因此抛出此错误。
  • Host key verification failed:这是连接失败的核心原因。新创建的EC2服务器的主机密钥未被Bitbucket Pipeline环境信任,默认情况下SSH会验证陌生主机的密钥,非交互式环境中无法手动确认,导致连接失败。旧服务器的密钥已存在于Pipeline的~/.ssh/known_hosts文件中,所以能正常连接。
解决方法

方法1:提前添加新EC2的主机密钥到信任列表(推荐)

  1. 在本地终端执行以下命令,获取新EC2的主机密钥:

    ssh-keyscan -H <EC2公网IP或域名>
    

    输出的内容类似:|<EC2公网IP>| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBB...

  2. 配置Bitbucket Pipeline:

    • 方式一:在bitbucket-pipelines.yml中添加步骤写入密钥:
      pipelines:
        default:
          - step:
              script:
                - mkdir -p ~/.ssh
                - echo "获取到的主机密钥行" >> ~/.ssh/known_hosts
                - chmod 600 ~/.ssh/known_hosts
                - ssh ec2-user@<EC2公网IP> "你的业务命令"
      
    • 方式二:在Bitbucket仓库的设置 > SSH密钥页面,将获取到的主机密钥粘贴到Known hosts字段中,Pipeline运行时会自动加载该配置。

方法2:临时禁用主机密钥验证(仅测试场景)

在SSH命令中添加参数跳过密钥验证,注意此方式存在安全风险,生产环境禁止使用:

ssh -o StrictHostKeyChecking=no ec2-user@<EC2公网IP> "你的业务命令"

方法3:确认基础配置无误

  • 检查Bitbucket仓库的SSH密钥列表,确保用于连接EC2的私钥已正确配置。
  • 确认新EC2服务器的~/.ssh/authorized_keys文件中已添加对应公钥。
  • 检查EC2安全组规则,允许Bitbucket Pipeline的IP段访问22端口。

内容的提问来源于stack exchange,提问作者Thilina Ashen Gamage

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:52:45