• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

卢晓春的博客

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

Gitlab CICD使用ssh executor

前言

之所以使用ssh executor是为了代替shell executor。因为shell executor不太好取消流水线,往往要等到超时了才能终止。
关于修改配置文件的操作可能不太规范,具体没有研究过。

具体操作

1. 修改Gitlab Runner为使用gitlab-runner用户执行,避免修改root相关配置

参考如下

[Unit]
Description=GitLab Runner
ConditionFileIsExecutable=/usr/bin/gitlab-runner

After=network.target

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/gitlab-runner "run" "--config" "/home/gitlab-runner/config.toml" "--working-directory" "/home/gitlab-runner"
User=gitlab-runner
Group=gitlab-runner

Restart=always

RestartSec=120
EnvironmentFile=-/etc/sysconfig/gitlab-runner

[Install]
WantedBy=multi-user.target

2. 将配置文件改到gitlab-runner用户目录下,避免读取配置文件失败

sudo mv /etc/gitlab-runner/config.toml /home/gitlab-runner
sudo chown gitlab-runner /home/gitlab-runner/config.toml
sudo chgrp gitlab-runner /home/gitlab-runner/config.toml
# 保持原来的路径有效
sudo ln -sf /home/gitlab-runner/config.toml /etc/gitlab-runner/config.toml

3. 生成密钥

sudo -u gitlab-runner ssh-keygen -t ed25519

4. 添加公钥到authorized_keys

cat .ssh/id_ed25519.pub >> .ssh/authorized_keys

5. 添加ssh服务器的公钥到known_hosts

正常情况每次连接一台行服务器,会提示你是否记录当前的服务器指纹(防止中间人攻击)
这里相当于提前记录指纹,否则到时候cicd会出错

sudo -u gitlab-runner bash

ssh-keyscan -H localhost >> ./.ssh/known_hosts

6. 修改toml.config,启用ssh executor

完整文件参考:

concurrent = 2
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Ubuntu-Test"
  url = #"gitlab服务器地址"
  id = 1
  token = #"服务器token"
  token_obtained_at = 2025-10-27T07:19:10Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "ssh"
  [runners.ssh]
    host = "localhost"           # 或 127.0.0.1
    port = "22"
    user = "gitlab-runner"       # 使用 gitlab-runner 用户
    password = ""
    identity_file = "/home/gitlab-runner/.ssh/id_ed25519"
    # disable_strict_host_key_checking = true
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

关键段:

  [runners.ssh]
    host = "localhost"           # 或 127.0.0.1
    port = "22"
    user = "gitlab-runner"       # 使用 gitlab-runner 用户
    password = ""
    identity_file = "/home/gitlab-runner/.ssh/id_ed25519"
    # disable_strict_host_key_checking = true        # 如果不添加公钥到known_hosts则需要设置为true

7. 重启服务

sudo systemctl daemon-reload
sudo systemctl restart gitlab-runner.service

posted on 2025-11-17 13:29  卢晓春  阅读(1)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3