我使用Centos 6.5
和Jenkins 1.547
。我按照 Jenkins 的 wiki 中概述的方式安装了 Jenkins。
我将 Jenkins 配置为监听本地端口8081
。
netstat -tulpn
揭示了 Jenkins 还监听了更多端口(PID 981正在运行的 Jenkins 进程):
$ netstat -tulpn | grep 981
tcp 0 0 :::41613 :::* LISTEN 981/java
tcp 0 0 ::ffff:127.0.0.1:8081 :::* LISTEN 981/java
tcp 0 0 :::43586 :::* LISTEN 981/java
udp 0 0 :::33848 :::* 981/java
udp 0 0 :::5353 :::* 981/java
我想知道这些额外端口的用途。此外,这些端口可以从外部访问,也就是说,外部nmap
扫描显示这些端口是开放的。
如何配置 Jenkins 以仅监听本地端口 8081?
答案1
Jenkin 的 bugtracker 中有一个未解决的问题,其中概述了关闭所有不需要的端口需要遵循的步骤:
- 在 Jenkins 的 Web 界面中,仪表板→管理 Jenkins→配置系统→SSH 服务器, 选择禁用。
- 在 Jenkins 的 Web 界面中,仪表板→管理 Jenkins→配置全局安全→JNLP 从属代理的 TCP 端口, 选择禁用。
- 假设 Jenkins
/etc/init.d/jenkins
通过无特权用户,然后编辑配置文件/etc/sysconfig/jenkins
,找到JENKINS_JAVA_OPTIONS
并添加-Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=1023
(...例如假设它当前读取JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
,然后将其更改为JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.DNSMultiCast.disabled=true -Dhudson.udp=1023"
)