温馨提示×

Ubuntu Jenkins如何远程操作

小樊
54
2025-09-21 01:41:14
栏目: 智能运维

Ubuntu Jenkins远程操作配置指南

一、远程访问Jenkins管理界面

要远程访问Ubuntu服务器上的Jenkins,需完成以下基础配置:

  1. 安装Jenkins
    在Ubuntu上通过包管理器安装Jenkins及依赖:
    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 - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list' sudo apt update && sudo apt install -y jenkins 
  2. 启动Jenkins服务
    设置Jenkins开机自启并立即启动:
    sudo systemctl enable jenkins sudo systemctl start jenkins sudo systemctl status jenkins # 验证服务状态 
  3. 开放防火墙端口
    使用ufw开放Jenkins管理界面(8080)和Agent通信(50000)端口:
    sudo ufw allow 8080/tcp sudo ufw allow 50000/tcp sudo ufw reload 
  4. 初始化Jenkins
    获取初始管理员密码并完成解锁:
    sudo cat /var/lib/jenkins/secrets/initialAdminPassword 
    浏览器访问http://<Ubuntu服务器IP>:8080,输入初始密码完成解锁。后续建议创建专用管理员账户(而非使用默认admin)。
  5. 安全强化配置
    • 启用全局安全:进入Manage Jenkins > Configure Global Security,勾选“Enable security”。
    • 选择认证方式:推荐使用“Jenkins’ own user database”(内置用户管理)或“LDAP”(企业级认证)。
    • 授权策略:选择“Role-Based Strategy”(基于角色的访问控制),精细化分配用户权限(如管理员、开发者、观察者)。
    • 配置SSL(可选但推荐):通过Let’s Encrypt申请免费证书,将Jenkins访问协议升级至HTTPS(避免密码明文传输)。

二、远程命令行操作Jenkins

Jenkins提供两种主流远程命令行方式:SSH接口CLI jar工具

1. 通过SSH执行命令

  • 启用SSH Server
    进入Manage Jenkins > Configure Global Security,找到“SSH Server” section,设置监听端口(如8090,默认随机),保存配置。
  • 添加用户SSH密钥
    将远程用户的公钥(~/.ssh/id_rsa.pub)添加到Jenkins对应用户的“Public Keys”列表(Manage Jenkins > Manage Users > 选择用户 > Configure)。
  • 执行远程命令
    使用SSH命令连接Jenkins,格式为ssh -l <用户名> -p <端口> <Jenkins服务器IP> <Jenkins命令>。例如:
    ssh -l jack -p 8090 192.168.1.100 who-am-i # 验证身份 ssh -l jack -p 8090 192.168.1.100 build test -f -v # 触发名为test的job 

2. 使用jenkins-cli.jar工具

  • 下载CLI jar
    从Jenkins服务器下载官方CLI工具:
    wget http://<Jenkins服务器IP>:8080/jnlpJars/jenkins-cli.jar 
  • 认证方式
    • 用户名+密码(不推荐):直接在命令中输入账号密码(易泄露)。
      java -jar jenkins-cli.jar -s http://<Jenkins服务器IP>:8080 -auth jack:123456 build test 
    • API Token(推荐)
      1. 进入Manage Jenkins > Manage Users > 选择用户 > Configure > API Token,生成新token。
      2. 使用token认证:
        java -jar jenkins-cli.jar -s http://<Jenkins服务器IP>:8080 -auth jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd build test 
      3. 安全存储token:将token保存到本地文件(如~/.jenkins-token),通过@引用:
        echo jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd > ~/.jenkins-token java -jar jenkins-cli.jar -s http://<Jenkins服务器IP>:8080 -auth @~/.jenkins-token build test 
      4. 环境变量认证:将用户名和token存入环境变量,简化命令:
        export JENKINS_USER_ID=jack export JENKINS_API_TOKEN=11d5ca0f9ee2dac8c47492b3e6b71c82cd java -jar jenkins-cli.jar -s http://<Jenkins服务器IP>:8080 -auth $JENKINS_USER_ID:$JENKINS_API_TOKEN build test 

三、远程控制主机执行脚本(Publish Over SSH插件)

若需远程执行Shell脚本或传输文件到其他主机(如部署构建产物),可通过Publish Over SSH插件实现:

  1. 安装插件
    进入Manage Jenkins > Manage Plugins > Available,搜索“Publish Over SSH”,点击“Install without restart”。
  2. 配置SSH远程主机
    进入Manage Jenkins > Configure System > Publish over SSH,点击“Add”添加远程主机:
    • Name:自定义标识(如RemoteServer)。
    • Hostname:远程主机IP或域名。
    • Username:远程主机登录用户名(如ubuntu)。
    • Remote Directory:远程主机上的目标目录(如/var/www/html,需提前创建)。
    • Credentials:选择或添加SSH私钥(需提前在Jenkins“Credentials”中配置,类型为“SSH Username with private key”)。
  3. 在项目中使用插件
    • Freestyle Project:进入项目配置,找到“Post-build Actions”,添加“Send build artifacts over SSH”,选择配置好的SSH主机,设置源文件(如dist/**/*,匹配构建产物)和目标目录(如/var/www/html),还可添加执行命令(如systemctl restart nginx)。
    • Pipeline:在Jenkinsfile中使用sshPublisher步骤:
      pipeline { agent any stages { stage('Deploy') { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: 'RemoteServer', // 对应配置的SSH主机名称 transfers: [ sshTransfer( sourceFile: 'dist/**/*', removePrefix: 'dist', remoteDirectory: '/var/www/html' ) ], execCommand: 'systemctl restart nginx' // 部署后重启服务 ) ] ) } } } } 

四、分布式构建(远程Slave节点)

若需将构建任务分发到远程Ubuntu服务器(Slave节点),可通过SSH连接实现:

  1. 准备Slave节点
    在远程Ubuntu服务器上安装Jenkins Agent和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 - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ /etc/apt/sources.list.d/jenkins.list' sudo apt update && sudo apt install -y jenkins 
  2. 配置Master节点
    进入Manage Jenkins > Manage Nodes and Clouds > New Node,输入节点名称(如RemoteSlave),选择“Permanent Agent”,点击“OK”。
    • Remote root directory:设置Slave节点的工作目录(如/home/ubuntu/jenkins)。
    • Launch method:选择“Launch agents via SSH”,填写Slave节点的Hostname/IP,选择之前配置的SSH Credentials(私钥)。
    • Host Key Verification Strategy:选择“Non verifying Verification Strategy”(测试环境)或手动验证主机密钥(生产环境)。
  3. 启动Slave节点
    保存配置后,Jenkins会自动通过SSH连接到Slave节点,启动Agent进程。节点状态显示为“Online”即表示连接成功。
  4. 分配任务到Slave
    在项目配置中,勾选“Restrict where this project can be run”,输入Slave节点的标签(如RemoteSlave),任务将自动分发到该节点执行。

0