Jenkins如何在Ubuntu上进行远程控制
导读:在Ubuntu上远程控制Jenkins的可行方式 远程触发构建与脚本化操作:通过 SSH CLI 或 jenkins-cli.jar 在外部对 Jenkins 发起构建、查询状态、执行命令。 远程部署与文件分发:在 Jenkins 中配置...
在Ubuntu上远程控制Jenkins的可行方式
- 远程触发构建与脚本化操作:通过 SSH CLI 或 jenkins-cli.jar 在外部对 Jenkins 发起构建、查询状态、执行命令。
- 远程部署与文件分发:在 Jenkins 中配置 Publish Over SSH,把制品推送到目标机器并执行远程命令。
- 横向扩展执行节点:把 Ubuntu 机器添加为 Jenkins 代理节点(Agent),由主控节点下发任务到 Agent 执行。
方式一 远程触发与命令行控制
- 启用并获取 Jenkins SSH 服务端口
- 在 Manage Jenkins → Configure Global Security 勾选并配置 SSH Server(可固定端口,如 8090;若选 Random,可用命令查看实际端口:curl -Lv http://< JENKINS_URL> :8080/login 2> & 1 | grep ‘X-SSH-Endpoint’)。
- 为用户添加公钥
- 进入 Manage Jenkins → Users → 目标用户 → Configure → Public Keys,添加你的 SSH 公钥,用于密钥登录。
- 通过 SSH 执行命令
- 基本用法:ssh -l < 用户名> -p < SSH端口> < JENKINS_HOST> < 命令>
- 常用命令示例:
- 查看可用命令:ssh -l < 用户名> -p < 端口> < 主机> help
- 触发构建:ssh -l < 用户名> -p < 端口> < 主机> build < JOB_NAME> -f -v(-f 等待完成,-v 输出详情)
- 使用 jenkins-cli.jar(HTTP 传输)
- 下载 CLI:wget http://< JENKINS_URL> /jnlpJars/jenkins-cli.jar
- 远程执行示例:java -jar jenkins-cli.jar -s http://< JENKINS_URL> / -ssh -user < 用户名> build < JOB_NAME> -f -v
- 说明:CLI 默认走 HTTP,也可结合 SSH 使用;执行不同命令需对应权限。
方式二 远程部署与文件分发 Publish Over SSH
- 安装插件
- Manage Jenkins → Manage Plugins → Available 安装 Publish Over SSH。
- 配置目标机器的 SSH 信息
- Manage Jenkins → Configure System → Publish over SSH:新增 SSH Server,填写 Hostname、Username,选择 Password 或 Private Key(推荐密钥)。
- 在 Job 中使用
- 在 Freestyle/Pipeline 的构建步骤选择 Send build artifacts over SSH:
- 配置 Source files(要传输的文件/目录)、Remove prefix(去除前缀)、Remote directory(远程目录)
- 在 Exec command 中写入远程执行的 Shell 命令(如重启服务、解压、备份等)
- 在 Freestyle/Pipeline 的构建步骤选择 Send build artifacts over SSH:
- 验证
- 执行一次构建,检查控制台输出是否出现 Transferred X file(s) 且远程命令返回成功。
方式三 添加 Ubuntu 代理节点进行远程执行
- Ubuntu 代理节点准备
- 安装 OpenJDK 11(或项目所需版本):sudo apt update & & sudo apt install -y openjdk-11-jdk
- 确保 SSH 服务已启用,并允许 Jenkins 主控节点用密钥登录(建议创建专用 jenkins-agent 用户)。
- Jenkins 主控端添加节点
- Manage Jenkins → Nodes → New Node,命名并选择 Permanent Agent;
- 配置 # of executors、Remote root directory(如 /var/jenkins)、Labels、Launch method 选 Launch agents via SSH;
- 填写 Host、Credentials(私钥或用户名/密码),保存后启动代理。
- 验证
- 节点上线后,可在 Job 的 Restrict where this project can be run 选择对应 Label,任务将在该 Ubuntu 代理上执行。
安全与网络配置要点
- 防火墙与端口
- 开放 8080/TCP(Web 管理)、50000/TCP(Agent 通信,如使用内置 JNLP/SSH 代理),以及你为 Jenkins SSH Server 配置的端口(如 8090/TCP):
- sudo ufw allow 8080/tcp
- sudo ufw allow 50000/tcp
- sudo ufw allow 8090/tcp
- sudo ufw reload
- 开放 8080/TCP(Web 管理)、50000/TCP(Agent 通信,如使用内置 JNLP/SSH 代理),以及你为 Jenkins SSH Server 配置的端口(如 8090/TCP):
- 身份与授权
- 禁用匿名访问,启用 登录用户可操作 或更细粒度的 基于角色的授权策略(Role-based Authorization Strategy);
- 为 SSH/CLI 操作创建 最小权限 的专用账号,并使用 SSH 密钥而非口令。
- 连接与密钥细节
- 使用 SSH 密钥认证时,确保私钥格式正确(包含 -----BEGIN/END RSA PRIVATE KEY-----),并为私钥设置合适权限;
- 首次连接目标主机需在 Known Hosts 中建立指纹,避免交互阻塞(可在 Jenkins 节点配置中预先接受主机密钥)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins如何在Ubuntu上进行远程控制
本文地址: https://pptw.com/jishu/759764.html
