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

GitHub Actions中SSH连接失败:Host key verification failed问题解决

解决方案

1. 修正GitHub Actions Workflow配置

先修改部署步骤,将密钥和必要变量通过环境变量传递给shell脚本,避免在脚本中直接使用GitHub Actions模板语法:

deploy:
    name: Deploy to ECR
    runs-on: ubuntu-latest
    env:
      SSH_USER: ubuntu
      SSH_HOST: 13.234.201.241
      SSH_PORT: 22
      SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
      CONTAINER_NAME: your-container-name  # 替换为你的实际容器名称
      LOCAL_PORT: your-local-port          # 替换为你的实际端口号
      ECR_REGISTRY: 714116641665.dkr.ecr.us-east-1.amazonaws.com
    steps:
      - name: Checkout code
        uses: actions/checkout@v4  # 确保代码被检出,避免找不到release.sh
        
      - name: Release
        run: |
          chmod +x ./release.sh
          ./release.sh

2. 修正release.sh脚本

更新脚本,改用环境变量调用密钥,同时处理SSH主机密钥验证问题:

#!/bin/bash

# 处理SSH主机密钥验证,解决"Host key verification failed"错误
ssh-keyscan -p "${SSH_PORT}" "${SSH_HOST}" >> ~/.ssh/known_hosts

# 创建SSH私钥文件,用-e保留密钥中的换行符
echo -e "$SSH_PRIVATE_KEY" > ./ssh_private_key
chmod 600 ./ssh_private_key

# 删除现有Docker容器
ssh -i ./ssh_private_key -p "${SSH_PORT}" "${SSH_USER}@${SSH_HOST}" "docker rm -f ${CONTAINER_NAME}"

# 登录ECR
ssh -i ./ssh_private_key -p "${SSH_PORT}" "${SSH_USER}@${SSH_HOST}" << EOF
  aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin ${ECR_REGISTRY}
EOF

# 清理临时密钥文件
rm ./ssh_private_key

关键问题说明

  1. bad substitution错误
    你在shell脚本中直接写了${{ secrets.SSH_PRIVATE_KEY }},这是GitHub Actions的模板语法,bash无法解析。必须通过Workflow的env字段把密钥转成环境变量,再在脚本里用$SSH_PRIVATE_KEY调用。

  2. Host key verification failed错误
    GitHub Actions的Runner是临时环境,首次连远程服务器不会自动信任主机密钥。用ssh-keyscan把目标服务器的主机密钥加到known_hosts里,就能跳过手动验证。

  3. 未定义变量问题
    脚本里的${CONTAINER_NAME}和${LOCAL_PORT}之前没在Workflow里定义,必须在env字段补充这些变量的实际值,否则脚本执行时会出现空值错误。

  4. 私钥格式问题
    用echo -e写入私钥,能保留密钥里的换行符,否则SSH会因为密钥格式错误拒绝连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:20:16