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

Gitlab Runners on Fargate自定义镜像无法与EC2管理Runner连接求助

GitLab Runner Fargate自定义镜像SSH连接失败解决办法

核心问题

GitLab Runner的Fargate驱动依赖SSH管理任务容器,你的自定义镜像缺少官方镜像自带的SSH密钥自动配置逻辑,导致EC2管理节点无法连接Fargate任务。

具体实现步骤

1. 给镜像安装sshd及依赖

根据你的基础镜像选择对应命令:

  • Debian/Ubuntu系:
RUN apt-get update && apt-get install -y --no-install-recommends openssh-server sudo && \
    rm -rf /var/lib/apt/lists/*
  • Alpine系:
RUN apk add --no-cache openssh sudo

2. 配置sshd允许公钥登录

修改sshd配置,开启公钥认证、禁用密码登录:

RUN mkdir /var/run/sshd && \
    echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config && \
    echo "PasswordAuthentication no" >> /etc/ssh/sshd_config && \
    echo "ChallengeResponseAuthentication no" >> /etc/ssh/sshd_config

3. 编写启动脚本处理SSH公钥环境变量

官方镜像会自动读取RUNNER_SSH_PUB_KEY环境变量,并将公钥写入runner用户的authorized_keys。你需要自己实现这个逻辑,创建启动脚本/usr/local/bin/start-runner.sh:

#!/bin/bash
set -e

# 不存在runner用户则创建,并赋予sudo权限
if ! id -u runner >/dev/null 2>&1; then
    useradd -m -s /bin/bash runner
    echo "runner ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/runner
    chmod 0440 /etc/sudoers.d/runner
fi

# 将环境变量中的公钥写入runner用户的authorized_keys
mkdir -p /home/runner/.ssh
echo "$RUNNER_SSH_PUB_KEY" > /home/runner/.ssh/authorized_keys
chown -R runner:runner /home/runner/.ssh
chmod 0700 /home/runner/.ssh
chmod 0600 /home/runner/.ssh/authorized_keys

# 启动sshd服务
/usr/sbin/sshd -D

然后在Dockerfile中添加脚本相关配置:

COPY start-runner.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/start-runner.sh
CMD ["/usr/local/bin/start-runner.sh"]

4. 本地验证镜像配置

构建镜像后,本地启动容器测试SSH连接:

docker run -e RUNNER_SSH_PUB_KEY="你的测试公钥内容" -p 2222:22 你的镜像名称

用对应私钥尝试登录:

ssh -p 2222 runner@localhost

能成功登录则说明镜像的SSH配置正常。

5. 确认GitLab Runner配置中的环境变量传递

检查config.toml的Fargate配置,确保RUNNER_SSH_PUB_KEY正确传递:

[[runners]]
  name = "Fargate Runner"
  executor = "fargate"
  [runners.fargate]
    # 保留其他原有配置
    environment = ["RUNNER_SSH_PUB_KEY=你的EC2管理节点公钥内容"]

常见排查点

  • 检查Fargate任务的安全组,是否允许22端口从EC2管理节点的IP访问
  • 确认EC2管理节点的私钥与传递给Fargate任务的公钥是配对的
  • 查看Fargate任务日志,确认启动脚本是否正常执行、sshd服务是否成功启动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:30:41