如何配置GitLab CI SSH Runner以正确应用SSH ProxyJump跳转规则
根因说明
GitLab Runner的SSH executor默认使用内置的Go语言SSH客户端,不会主动加载系统全局/etc/ssh/ssh_config或用户目录下的.ssh/config配置,因此你预先配置的ProxyJump规则不会被识别,Runner会尝试直连serverB的22端口,最终触发连接拒绝报错。
解决方案
方案一:直接在Runner配置中声明跳转规则(推荐)
GitLab Runner的SSH配置原生支持代理跳转参数,直接修改/etc/gitlab-runner/config.toml的[runners.ssh]段即可:
[runners.ssh] user = "idB" host = "serverB" identity_file = "/home/gitlab-runner/.ssh/id_ed25519" # 新增serverA代理跳转配置 proxy_host = "serverA" proxy_user = "idA" # 如果serverA的认证密钥和serverB不同,替换为对应密钥路径 proxy_identity_file = "/home/gitlab-runner/.ssh/id_ed25519"
修改完成后重启Runner服务生效:
gitlab-runner restart
方案二:配置gitlab-runner用户的SSH配置文件
如果你希望复用已有的SSH配置规则,需要将配置放到gitlab-runner用户的专属配置路径下:
- 切换到gitlab-runner用户家目录,创建SSH配置文件:
su - gitlab-runner mkdir -p ~/.ssh chmod 700 ~/.ssh vim ~/.ssh/config
- 写入你现有的SSH规则:
Host serverA User idA Host serverB User idB ProxyJump serverA
- 调整配置文件权限:
chmod 600 ~/.ssh/config
- 验证连通性,确保gitlab-runner用户可以正常连接serverB:
ssh serverB
- 重启Runner服务生效。
验证
配置完成后重新运行CI/CD作业即可正常通过跳转连接到serverB执行任务。
内容的提问来源于stack exchange,提问作者gregseth
相关产品推荐
相关产品推荐

