Ubuntu 上实现 Jenkins 远程管理的实用方案
一 远程 Web 与 CLI 管理
- 启用远程访问与端口
- 安装后在浏览器访问 http://服务器IP:8080,首次解锁密码位于 /var/lib/jenkins/secrets/initialAdminPassword。
- 如需开放防火墙,放行 8080(Web)与 50000(Agent 通信):sudo ufw allow 8080/tcp; sudo ufw allow 50000/tcp; sudo ufw reload。
- 安全加固
- 进入 Manage Jenkins → Security,启用安全;选择 Logged-in users can do anything,禁用匿名访问,创建管理员账户。
- 远程 CLI(HTTP 方式)
- 下载 CLI:wget $JENKINS_URL/jnlpJars/jenkins-cli.jar。
- 使用 API Token 认证(推荐):java -jar jenkins-cli.jar -s $JENKINS_URL -auth 用户名:API_Token build job名 -f -v。
- 也可将“用户名:API_Token”写入文件(如 .jenkins-token),用 -auth @.jenkins-token 引用;或通过环境变量 JENKINS_USER_ID / JENKINS_API_TOKEN 提供凭据。
- 远程 CLI(SSH 方式)
- 启用内置 SSH 服务:进入 Manage Jenkins → Configure Global Security,勾选并配置 SSH Server,可指定端口(如 8090)。
- 获取实际监听端口:curl -Lv http://服务器IP:8080/login 2>&1 | grep X-SSH-Endpoint。
- 为用户添加公钥(Jenkins 用户配置页 → Public Keys),之后可 SSH 执行命令:ssh -l 用户名 -p 8090 服务器IP who-am-i / help / build job名 -f -v。
二 远程部署与执行命令
- 使用 Publish Over SSH 插件
- 安装插件:Manage Jenkins → Manage Plugins → Available 搜索并安装 Publish Over SSH。
- 系统配置:Manage Jenkins → Configure System → Publish over SSH,新增远程主机,填写 Hostname、Username、Private Key(或密码),可设置 Remote Directory。
- 在任务(Freestyle 或 Pipeline)构建后操作选择 Send build artifacts over SSH,配置:
- Source files:如 dist/ 或 target/*.jar
- Remove prefix:如 dist
- Remote directory:如 /var/www/myapp
- Exec command:如 systemctl restart myapp
- 使用脚本方式(SCP/SSH)
- 在构建后执行脚本示例:
- scp -r dist/ user@host:/var/www/myapp
- ssh user@host “systemctl restart myapp”
- 适用于更灵活的自定义流程或容器化环境。
三 远程触发构建
- 远程触发 Token
- 在目标 Job 配置中启用 Trigger builds remotely,设置 Authentication Token(如 devbuild)。
- 通过 URL 触发:http://jenkinsHost/job/项目名/build?token=token(可用 curl/wget 或内部门户按钮触发)。
- 权限与最小授权
- 结合 Matrix-based security 为用户/组仅授予必要的 Job/Build/Read 权限,避免过度授权。
四 安全与网络建议
- 启用 HTTPS(反向代理或内置),避免明文传输凭据与构建产物。
- 使用 API Token 替代密码;SSH 采用 密钥认证,妥善管控私钥与 known_hosts。
- 限制来源 IP、仅开放必要端口(如 8080/50000/SSH),并定期审查 日志与审计 记录。