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

如何从不同GCP虚拟机上的主Jenkins容器SSH连接到子Jenkins容器

GCP跨VM Docker容器SSH连接实现方案

以下是3种可落地的实现方案,按配置复杂度从低到高排序:

方案1:端口映射+防火墙放行(最常用)

  • 操作步骤:
    1. 先配置子Jenkins容器的SSH能力:在子Jenkins的Dockerfile中加入openssh-server安装和初始化配置,参考配置:
      FROM jenkins/jenkins:lts
      USER root
      RUN apt-get update && apt-get install -y openssh-server \
          && mkdir /var/run/sshd \
          # 配置jenkins用户的密码或者注入公钥
          && echo 'jenkins:自定义密码' | chpasswd \
          && sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
      EXPOSE 22
      CMD ["/usr/sbin/sshd", "-D", "&&", "/usr/local/bin/jenkins.sh"]
      
    2. 启动子Jenkins容器时添加端口映射参数,将容器22端口映射到VM-B的自定义端口,比如10022:
      docker run -d -p 8080:8080 -p 10022:22 --name jenkins-slave 你的镜像名
    3. 配置GCP VPC防火墙规则:放行源为VM-A内网IP、目标为VM-B内网IP、端口为10022的TCP入站流量,同时确认VM-B的系统防火墙(firewalld/ufw)也放行该端口。
    4. 主Jenkins容器内直接执行SSH命令连接即可:
      ssh jenkins@<VM-B的内网IP> -p 10022
  • 优缺点:配置门槛低,不需要修改现有网络架构;缺点是端口暴露到宿主机层面,需要严格配置防火墙规则避免安全风险。

方案2:Host网络模式

  • 操作步骤:
    1. 同方案1第一步先配置子Jenkins容器的SSH能力,注意如果VM-B本身的sshd服务占用了22端口,需要修改容器内sshd的监听端口为其他未占用端口,比如2022。
    2. 启动子Jenkins容器时指定使用Host网络模式,容器直接复用VM-B的网络栈:
      docker run -d --network host --name jenkins-slave 你的镜像名
    3. 配置GCP防火墙和VM-B系统防火墙,放行对应SSH端口的入站流量,源地址限制为VM-A的内网IP。
    4. 主Jenkins容器直接连接VM-B内网IP加对应SSH端口即可。
  • 优缺点:网络性能无损耗,不需要做端口映射;缺点是容器和宿主机网络完全打通,隔离性差,存在端口冲突风险。

方案3:跨节点Overlay网络(安全性最高)

  • 操作步骤:
    1. 在VM-A和VM-B上搭建Docker Swarm集群,或者部署Consul作为服务发现组件,创建跨节点的Overlay网络,两个Jenkins容器都加入该Overlay网络。
    2. 子Jenkins容器配置好SSH能力后,不需要做端口映射也不需要用Host网络。
    3. 主Jenkins容器可以直接通过子Jenkins容器的名称,或者Overlay网络分配的内部IP,直接访问22端口完成SSH连接。
  • 优缺点:容器网络完全隔离,不需要暴露端口到宿主机,安全性最高;缺点是配置复杂度高,需要额外维护Overlay网络组件。
通用安全建议
  • 所有SSH连接优先使用密钥认证,不要用密码认证,密钥存储在Jenkins内置的凭证管理中,不要明文写在脚本或配置里。
  • 所有防火墙规则只放行必要的源IP和端口,禁止开放0.0.0.0/0的入站权限。
  • 子Jenkins容器的sshd配置禁止root用户登录,仅开放权限最小的业务用户用于SSH连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 06:15:00