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

配置Jenkins EC2插件使用EC2从节点公网IP解决SSH连接超时问题

Jenkins本地主节点连接EC2从节点超时问题

问题描述

本地部署的Jenkins主节点,使用EC2 Plugin按需创建AWS EC2从节点,计划通过SSH实现主从连接。手动通过从节点公网IP可正常SSH登录,但Jenkins自动连接时超时,日志信息如下:

INFO: Connecting to 172.31.44.131 on port 22, with timeout 10000.
Nov 06, 2024 9:58:55 AM hudson.plugins.ec2.EC2Cloud
INFO: Failed to connect via ssh: The kexTimeout (10000 ms) expired.
Nov 06, 2024 9:58:55 AM hudson.plugins.ec2.EC2Cloud

诊断确认:Jenkins默认采用EC2从节点的私网IP发起连接,但本地主节点处于AWS网络外部,无法访问私网IP,最终导致连接超时。已验证公网IP手动SSH可行,暂未找到EC2 Plugin中强制使用公网IP的直接选项。

解决方案

方案一:配置EC2 Plugin使用公网IP连接

  1. 更新EC2云节点配置

    • 进入Jenkins管理界面,依次打开「管理Jenkins」→「管理节点和云」→「配置云」,找到对应EC2云的配置项。
    • 在「实例配置」区域,找到「连接策略」(Connection Strategy)选项,选择Public IP(部分版本显示为Use Public IP)。若找不到该选项,先升级EC2 Plugin到最新版本,旧版本可能未提供此设置。
    • 若插件版本不支持直接选择公网IP,可在实例模板的「SSH启动器」配置中,将「主机」字段设置为变量${EC2_PUBLIC_IP},该变量会自动拉取实例的公网IP地址。
  2. 验证基础配置

    • 确保EC2实例模板绑定的SSH密钥对,本地主节点持有对应私钥;同时EC2实例的安全组已开放22端口,允许本地主节点的公网IP访问。

方案二:让本地主节点访问EC2私网IP(适合需私网访问的场景)

若必须通过私网IP连接,可采用以下两种方式:

  1. 搭建AWS站点到站点VPN
    • 在AWS配置虚拟专用网关(Virtual Private Gateway),将本地网络与AWS VPC建立站点到站点VPN连接,完成路由配置后,本地主节点即可直接访问EC2实例的私网IP。
  2. 跳板机端口转发(临时方案)
    • 启动一台带公网IP的EC2实例作为跳板机,在本地主节点上配置SSH隧道转发流量:
      ssh -i "跳板机密钥文件.pem" -L 2222:目标从节点私网IP:22 ec2-user@跳板机公网IP
      
    • 随后在Jenkins的SSH配置中,将主机设为localhost、端口设为2222即可,但此方式仅适合临时测试,不建议用于生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:27:04