如何配置Jenkins SSH认证节点使用非标准端口?
Jenkins SSH节点使用非标准端口的解决办法
当然可以不用标准22端口!你遇到的问题是Jenkins默认会把主机字段的内容当成纯IP/域名,自动拼接22端口,而且不识别ip:port这种格式——这确实有点反直觉,下面给你几个靠谱的解决办法:
方法一:节点配置的高级选项(最直接)
打开目标节点的配置页面,在「启动方式」选择「通过SSH启动从属节点代理」后,仔细找一下主机输入框旁边的**「高级」按钮**(很小,容易被忽略)。点击展开后,就能看到专门的「端口」输入字段了!直接填入你的非标准端口(比如2222),主机字段只填IP或域名就行,不用加端口号。保存配置后重新连接节点,就会用你指定的端口尝试SSH连接了。方法二:全局SSH服务器配置(适合多节点复用)
如果有多个节点需要用相同的非标准端口,推荐用全局配置:- 进入Jenkins的「系统管理」→「全局工具配置」
- 找到「SSH远程主机配置」(部分版本叫「SSH Servers」),点击「添加」
- 填写自定义的服务器名称、目标主机IP/域名、指定的非标准端口,再配置好认证方式(密码或密钥)
- 保存后回到节点配置页面,选择「通过SSH启动从属节点代理」,然后在「SSH服务器」下拉框里选你刚才配置好的服务器,Jenkins就会自动使用配置好的端口连接。
方法三:修改Jenkins配置文件(应急方案)
如果前两种方法都因为版本或权限问题无法使用,可以直接修改Jenkins的核心配置文件:- 找到Jenkins的主目录(通常是
~/.jenkins/)下的config.xml文件 - 找到对应节点的配置块,在
<launcher>标签内添加<port>你的端口号</port>字段,示例如下:<launcher class="hudson.plugins.sshslaves.SSHLauncher" plugin="ssh-slaves@1.32.0"> <host>192.168.1.100</host> <port>2222</port> <!-- 其他认证相关配置 --> </launcher> - 保存文件后重启Jenkins,节点就会用指定端口连接了。不过这种方法不推荐,因为升级Jenkins可能会覆盖配置,而且不如图形界面配置直观。
- 找到Jenkins的主目录(通常是
针对你的Docker容器场景,使用非标准端口完全合理,没必要强行使用22端口,上面的方法都能解决你的问题,优先试试方法一,操作最直接。
内容的提问来源于stack exchange,提问作者crusty




