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

GitLab Runner SSH连接失败:‘Host key verification failed.’问题求助

解决GitLab Runner用户SSH Host key verification failed且不提示添加主机的问题

你遇到的这个问题挺典型的——GitLab Runner的gitlab-runner系统用户原本能正常SSH登录服务器,新增机器后突然报错Host key verification failed.,连之前正常的服务器也出问题,清空known_hosts后还不弹信任提示,直接报错。我来帮你一步步排查解决:

1. 优先检查SSH目录的权限(最常见原因)

SSH对~/.ssh目录和文件的权限要求非常严格,如果权限太宽松,会直接拒绝使用相关文件,甚至连提示添加主机密钥的流程都走不下去。

先切换到gitlab-runner用户:

sudo su - gitlab-runner

然后检查目录和文件权限:

ls -ld ~/.ssh
ls -l ~/.ssh

正常情况下:

  • .ssh目录权限必须是700(只有所有者可读、写、执行)
  • 目录内的文件(比如known_hosts、私钥文件)权限必须是600

如果权限不对,立刻修复:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

2. 手动触发主机密钥信任流程

修复权限后,手动在gitlab-runner用户下执行SSH命令,强制接受目标主机的密钥:

ssh -o StrictHostKeyChecking=no your-user@target-server-ip

执行这个命令后,主机密钥会自动写入known_hosts,之后正常连接就不会报错了。

如果想更稳妥,也可以手动添加主机密钥:
先在任意能连通目标服务器的机器上获取公钥:

ssh-keyscan target-server-ip

把输出的内容复制到gitlab-runner用户的~/.ssh/known_hosts文件末尾即可。

3. 在CI/CD脚本中显式配置SSH环境

有时候GitLab Runner的Job执行环境会受限,默认的SSH配置可能不生效。可以在你的CI/CD脚本里提前做初始化:

deploy_job:
  script:
    # 确保SSH目录存在且权限正确
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    # 手动添加目标服务器的主机密钥
    - ssh-keyscan target-server-ip >> ~/.ssh/known_hosts
    - chmod 600 ~/.ssh/known_hosts
    # 执行部署命令
    - ssh your-user@target-server-ip "your-deploy-commands-here"

这样能避免Job执行时的环境问题导致的SSH认证失败。

4. 排查安全模块限制(SELinux/AppArmor)

如果你的服务器开启了SELinux或者AppArmor,可能会阻止gitlab-runner用户写入~/.ssh目录。可以临时关闭SELinux测试:

sudo setenforce 0

如果关闭后问题解决,就需要调整SELinux策略,允许gitlab-runner用户访问其SSH目录(比如用semanage命令配置)。


内容的提问来源于stack exchange,提问作者Sven van Zoelen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:05:33