Ubuntu Jenkins实现远程控制的步骤
首先在Ubuntu系统上安装Jenkins及依赖的Java环境(Jenkins依赖Java运行):
sudo apt update && sudo apt install -y openjdk-11-jdk
wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/" | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update && sudo apt install -y jenkins
启动Jenkins服务并设置为开机自启:
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins # 验证服务状态
为允许外部设备访问Jenkins管理界面及Agent通信,需通过防火墙开放默认端口:
sudo ufw allow 8080/tcp # Jenkins管理界面端口
sudo ufw allow 50000/tcp # Jenkins Agent通信端口
sudo ufw reload # 重新加载防火墙规则
通过浏览器访问http://<Ubuntu服务器IP>:8080
进入Jenkins初始化页面,输入管理员密码(通过命令获取):
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
完成初始设置(如安装推荐插件、创建管理员用户),确保后续远程操作的权限管理。
若需通过SSH远程管理Jenkins或执行命令,需启用内置SSH Server:
Manage Jenkins
→ Configure Global Security
;SSH Server
section,设置Port
(如8090,默认随机端口可通过curl -Lv http://<服务器IP>:8080/login 2>&1 | grep 'X-SSH-Endpoint'
获取);~/.ssh/authorized_keys
文件中(实现免密登录)。默认情况下,Jenkins的HTTP接口已允许远程访问,但需确保防火墙开放8080端口。远程设备可通过http://<Ubuntu服务器IP>:8080
直接访问管理界面。
最常用的方式是通过浏览器访问Jenkins管理界面,实现任务创建、构建触发、日志查看等功能。所有配置变更均可通过界面完成,无需直接操作服务器。
若启用了SSH服务,可通过以下命令远程执行Jenkins命令:
# 测试SSH连接(替换为实际用户名、服务器IP及端口)
ssh -l <jenkins用户名> -p <SSH端口> <服务器IP> who-am-i
# 触发指定任务构建(替换为实际任务名)
ssh -l <jenkins用户名> -p <SSH端口> <服务器IP> build <任务名> -f -v
通过SSH可实现自动化脚本中的Jenkins任务触发,适合CI/CD流程集成。
Jenkins提供RESTful API,支持通过HTTP请求远程触发任务、获取构建状态等。常用操作示例:
触发无参任务:
curl -X POST 'http://<Ubuntu服务器IP>:8080/job/<任务名>/build' --user <用户名>:<API Token>
(API Token可在Manage Jenkins
→ Manage Users
→ 用户名 → Configure
→ API Token
中生成)
触发带参数任务:
curl -X POST 'http://<Ubuntu服务器IP>:8080/job/<任务名>/buildWithParameters' --user <用户名>:<API Token> --data PARAM_NAME=value
获取任务状态:
curl -u <用户名>:<API Token> 'http://<Ubuntu服务器IP>:8080/job/<任务名>/lastBuild/api/json'
Jenkins自带CLI工具(jenkins-cli.jar
),可通过HTTP或SSH模式远程操作:
wget http://<Ubuntu服务器IP>:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://<Ubuntu服务器IP>:8080/ build <任务名> -f
(-s
指定Jenkins服务器URL,-f
表示等待任务完成)Manage Jenkins
→ Security
,启用Enable security
,选择Logged-in users can do anything
(或更严格的权限模型);ufw
)或Jenkins的IP Filter
功能,仅允许可信IP访问Jenkins;通过以上步骤,可实现Ubuntu Jenkins的安全远程控制,满足自动化构建、部署及管理的远程操作需求。