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

GitHub Action部署报错:Host key verification failed 求助

解决GitHub Action中SSH部署的Host key verification failed问题

核心问题原因

Host key verification failed 错误是因为GitHub Action的Ubuntu runner每次都是全新的临时环境,你手动添加到本地known_hosts的指纹不会同步到这个临时环境里,导致SSH连接时无法验证服务器主机密钥。

具体解决步骤

1. 获取服务器正确的SSH主机密钥

在本地终端执行以下命令(替换成你的服务器端口和地址):

ssh-keyscan -p 2200 your-server-host-or-ip

复制命令输出的所有内容(类似your-server-host-or-ip ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...),将其添加到GitHub仓库的Secrets中,命名为SSH_KNOWN_HOSTS。

2. 修改GitHub Action Workflow配置

推荐使用成熟的SSH管理Action来简化配置,它会自动处理密钥和主机密钥验证。修改后的yaml示例如下:

on:
  push:
    branches:
      - master
  workflow_dispatch:

jobs:
  run_pull:
    name: run pull
    runs-on: ubuntu-latest

    steps:
    - name: Setup SSH Agent
      uses: webfactory/ssh-agent@v0.7.0
      with:
        ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
        known-hosts: ${{ secrets.SSH_KNOWN_HOSTS }}

    - name: Connect to server and pull code
      run: ssh -p 2200 ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "cd ${{ secrets.WORK_DIR }} && git checkout ${{ secrets.MAIN_BRANCH }} && git pull"

3. 额外检查点

  • 确认你的SSH私钥已经正确添加到GitHub Secrets(命名为SSH_PRIVATE_KEY),并且公钥已经添加到服务器的~/.ssh/authorized_keys中。
  • 确保服务器上的git pull操作有足够权限:如果是HTTPS仓库,要确认服务器已配置凭证;如果是SSH仓库,服务器的SSH密钥需要有仓库的拉取权限。
  • 检查服务器防火墙是否允许GitHub Action的IP访问2200端口(可以临时关闭防火墙测试,或者添加GitHub的IP段到白名单)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:57:15