在 Debian 上运行的 Jenkins 中,“加密”通常可以从多个层面理解。下面我按常见需求给你系统讲一下,你可以按需选择。
Jenkins 默认就已经对凭据进行加密存储(使用 master.key + credentials.xml)。
withCredentials([usernamePassword(
credentialsId: 'my-cred',
usernameVariable: 'USER',
passwordVariable: 'PASS'
)]) {
sh 'curl -u $USER:$PASS http://example.com'
}
✅ 明文不会出现在日志中
✅ 存储在 Jenkins 内部(已加密)
以下文件 Jenkins 已自动加密:
$JENKINS_HOME/secrets/master.key$JENKINS_HOME/credentials.xml⚠️ 不要手动修改这些文件
withVault([
vaultSecrets: [
[path: 'secret/jenkins', secret: 'db-pass']
]
]) {
sh 'echo $DB_PASS'
}
适用于整个 Jenkins 服务器:
# Debian 安装
apt install cryptsetup
# 对磁盘分区加密
cryptsetup luksFormat /dev/sdb1
cryptsetup open /dev/sdb1 jenkins
mkfs.ext4 /dev/mapper/jenkins
✅ 物理磁盘被盗也无法读取
apt install nginx certbot
certbot certonly --nginx -d jenkins.example.com
Nginx 示例:
server {
listen 443 ssl;
server_name jenkins.example.com;
ssl_certificate /etc/letsencrypt/live/jenkins/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/jenkins/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
❌ 错误:
sh 'curl -u admin:123456 http://x'
✅ 正确:
withCredentials([string(credentialsId: 'api-token', variable: 'TOKEN')]) {
sh 'curl -H "Token: $TOKEN" http://x'
}
apt update && apt upgrade
例如:
我可以直接给你具体配置示例。