Ubuntu 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
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins # 驗證服務狀態
ufw
開放Jenkins管理界面(8080)和Agent通信(50000)端口:sudo ufw allow 8080/tcp
sudo ufw allow 50000/tcp
sudo ufw reload
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
瀏覽器訪問http://<Ubuntu服務器IP>:8080
,輸入初始密碼完成解鎖。后續建議創建專用管理員賬戶(而非使用默認admin)。Manage Jenkins > Configure Global Security
,勾選“Enable security”。Jenkins提供兩種主流遠程命令行方式:SSH接口和CLI jar工具。
Manage Jenkins > Configure Global Security
,找到“SSH Server” section,設置監聽端口(如8090,默認隨機),保存配置。~/.ssh/id_rsa.pub
)添加到Jenkins對應用戶的“Public Keys”列表(Manage Jenkins > Manage Users > 選擇用戶 > Configure
)。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
wget http://<Jenkins服務器IP>:8080/jnlpJars/jenkins-cli.jar
java -jar jenkins-cli.jar -s http://<Jenkins服務器IP>:8080 -auth jack:123456 build test
Manage Jenkins > Manage Users > 選擇用戶 > Configure > API Token
,生成新token。java -jar jenkins-cli.jar -s http://<Jenkins服務器IP>:8080 -auth jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd build test
~/.jenkins-token
),通過@
引用:echo jack:11d5ca0f9ee2dac8c47492b3e6b71c82cd > ~/.jenkins-token
java -jar jenkins-cli.jar -s http://<Jenkins服務器IP>:8080 -auth @~/.jenkins-token build test
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
若需遠程執行Shell腳本或傳輸文件到其他主機(如部署構建產物),可通過Publish Over SSH插件實現:
Manage Jenkins > Manage Plugins > Available
,搜索“Publish Over SSH”,點擊“Install without restart”。Manage Jenkins > Configure System > Publish over SSH
,點擊“Add”添加遠程主機:
RemoteServer
)。ubuntu
)。/var/www/html
,需提前創建)。dist/**/*
,匹配構建產物)和目標目錄(如/var/www/html
),還可添加執行命令(如systemctl restart nginx
)。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' // 部署后重啟服務
)
]
)
}
}
}
}
若需將構建任務分發到遠程Ubuntu服務器(Slave節點),可通過SSH連接實現:
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
Manage Jenkins > Manage Nodes and Clouds > New Node
,輸入節點名稱(如RemoteSlave
),選擇“Permanent Agent”,點擊“OK”。
/home/ubuntu/jenkins
)。RemoteSlave
),任務將自動分發到該節點執行。