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

