下面按常见场景给你讲:在 CentOS 上部署的 Jenkins 如何配置「密钥」,主要包括三类:
Jenkins 默认以 jenkins 用户运行:
sudo su - jenkins
ssh-keygen -t rsa -b 4096 -C "jenkins@centos"
一路回车,生成:
~/.ssh/id_rsa(私钥)~/.ssh/id_rsa.pub(公钥)cat ~/.ssh/id_rsa.pub
复制到:
Jenkins 页面:
Manage Jenkins → Manage Credentials → System → Global credentials
gitid_rsa 内容源码管理 → Git
git@github.com:xxx/xxx.gitsudo su - jenkins
ssh-keygen
ssh-copy-id user@remote-server
Manage Jenkins → Configure System → Publish over SSH
/var/lib/jenkins/.ssh/id_rsaPost-build → Send build artifacts over SSH
stage('Deploy') {
steps {
sshagent(['remote-ssh']) {
sh 'scp target/app.jar user@host:/opt/app/'
sh 'ssh user@host "systemctl restart app"'
}
}
}
Manage Jenkins → Credentials
Pipeline 使用:
withCredentials([string(credentialsId: 'docker-token', variable: 'TOKEN')]) {
sh 'docker login -u xxx -p $TOKEN'
}
✅ 权限问题
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh
✅ known_hosts
ssh user@host # 第一次手动确认
✅ Jenkins 用户不能 sudo
visudo
jenkins ALL=(ALL) NOPASSWD:ALL
如果你能告诉我:
我可以给你更精确的一步一步配置。