生成 SSH key(推荐 ed25519)
ssh-keygen -t ed25519 -C "jenkins@your-domain" -f /var/jenkins_home/.ssh/id_ed25519
生成后会有:
- 私钥:/var/jenkins_home/.ssh/id_ed25519
- 公钥:/var/jenkins_home/.ssh/id_ed25519.pub
把公钥加到 Git 仓库平台(以 GitHub 为例)
-
查看公钥内容:
cat /var/jenkins_home/.ssh/id_ed25519.pub
-
打开 GitHub → 右上角头像 → Settings → SSH and GPG keys → New SSH key
-
把刚才复制的公钥粘贴进去,保存。
GitLab / Gitea / 自建 Git 也类似:找到 SSH Keys 设置,加进去即可。
在 Jenkins 里添加 SSH 凭据(Credentials)
- 打开 Jenkins Web 页面。
- 左侧:Manage Jenkins → Credentials → (Global)。
- 右侧:Add Credentials。
- 选择:
- Kind:
SSH Username with private key(中文界面类似)
- Username:
- Private Key:
- 选
Enter directly
- 把
/var/jenkins_home/.ssh/id_ed25519 里的内容复制进去
(用 cat /var/jenkins_home/.ssh/id_ed25519 查看,然后复制)
- ID / Description:随便填一个有意义的,比如:
github-ssh-universe
- 保存。
配置 Job 使用 SSH 仓库 + 关联凭据
1. 确保仓库 URL 是 SSH 形式
例如 GitHub:
git@github.com:xxx/xxx.git
不是:
https://github.com/xxx/xxx.git
在 Pipeline(Jenkinsfile)里使用 SSH 凭据(可选)
如果你用的是声明式 Pipeline,可以这样写:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git branch: 'main',
url: 'git@github.com:universe-web3/universe-deploy-ansible.git',
credentialsId: 'github-ssh-universe'
}
}
}
}
注意
Jenkins 用 SSH 拉 github.com 时,要求严格校验证书(StrictHostKeyChecking=yes),但 known_hosts 里没有 github.com 的主机指纹,所以直接拒绝。
在 Jenkins Web 界面里调整 Git Host Key 策略
可以让 Jenkins 自己“自动信任”第一次连接的 host key(安全性稍差,但在你自己控制的环境里一般也可以接受)。
- 打开 Jenkins → 左侧 Manage Jenkins
- 找到 Configure Global Security
- 往下找到 Git Host Key Verification Configuration
- 选择其中一个策略:
- Known hosts file Verification Strategy(默认,配合上面方案一)
- 或者 Accept first connection(第一次自动接受 host key,以后照这个校验)
保存之后,再去构建你的 Job 试一次。