温馨提示×

centosjenkins如何配密钥

小樊
43
2026-10-20 20:05:02
栏目: 智能运维

下面按常见场景给你讲:在 CentOS 上部署的 Jenkins 如何配置「密钥」,主要包括三类:

  1. Jenkins 拉取 Git 代码(SSH 密钥)
  2. Jenkins 连接远程服务器(SSH 密钥)
  3. Jenkins 调用 API / 云账号(密钥 / Token)

一、Jenkins 拉取 Git 仓库(SSH 密钥)

1️⃣ 在 CentOS 的 Jenkins 用户下生成密钥

Jenkins 默认以 jenkins 用户运行:

sudo su - jenkins
ssh-keygen -t rsa -b 4096 -C "jenkins@centos"

一路回车,生成:

  • ~/.ssh/id_rsa(私钥)
  • ~/.ssh/id_rsa.pub(公钥)

2️⃣ 把公钥加到 Git 仓库

cat ~/.ssh/id_rsa.pub

复制到:

  • GitHub / GitLab:Settings → SSH Keys
  • 私服 Git:authorized_keys

3️⃣ Jenkins 中添加私钥

Jenkins 页面:

Manage Jenkins → Manage Credentials → System → Global credentials
  • Kind:SSH Username with private key
  • Username:git
  • Private Key:粘贴 id_rsa 内容

4️⃣ Job 中使用

源码管理 → Git

  • Repository URL:git@github.com:xxx/xxx.git
  • Credentials:选择刚添加的

二、Jenkins SSH 到远程服务器(部署用)

方法一:Publish Over SSH 插件(推荐)

1️⃣ 生成密钥

sudo su - jenkins
ssh-keygen
ssh-copy-id user@remote-server

2️⃣ Jenkins 配置

Manage Jenkins → Configure System → Publish over SSH
  • Passphrase:无(或密钥密码)
  • Path to key:/var/lib/jenkins/.ssh/id_rsa
  • SSH Servers:
    • Hostname
    • Username
    • Remote Directory

3️⃣ Job 中使用

Post-build → Send build artifacts over SSH


方法二:Credentials + Pipeline

stage('Deploy') {
    steps {
        sshagent(['remote-ssh']) {
            sh 'scp target/app.jar user@host:/opt/app/'
            sh 'ssh user@host "systemctl restart app"'
        }
    }
}

三、Jenkins 调用外部系统(Token / Secret)

示例:Docker / K8s / 云厂商

Manage Jenkins → Credentials
  • Secret text
  • Username with password

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

如果你能告诉我:

  • Jenkins 是 rpm / docker / k8s 安装的?
  • 想配的是 Git / 远程服务器 / 云?

我可以给你更精确的一步一步配置。

0 踩