Jenkins服务器SSH公钥配置步骤
步骤1. 在Jenkins服务器上生成SSH密钥
在Jenkins服务器上执行以下命令:
# 1. 生成SSH密钥对
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""# 2. 设置正确的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub# 3. 查看公钥内容
cat ~/.ssh/id_rsa.pub
步骤2. 复制公钥到目标服务器
方法1:使用ssh-copy-id(推荐)
# 在Jenkins服务器上执行
ssh-copy-id username@target-server-ip
方法2:手动复制
1. 在Jenkins服务器上复制公钥内容:```bashcat ~/.ssh/id_rsa.pub```2. 在目标服务器上创建或编辑authorized_keys文件:```bashmkdir -p ~/.sshchmod 700 ~/.sshecho "ssh-rsa AAAA..." >> ~/.ssh/authorized_keyschmod 600 ~/.ssh/authorized_keys有些目标服务器配置在 /root/.ssh/ 路径下
步骤3. 验证SSH连接
在Jenkins服务器上测试SSH连接:
ssh username@target-server-ip
步骤4:配置Jenkins SSH凭据
1. 登录Jenkins Web界面
2. 进入 "Manage Jenkins" > "Manage Credentials"
3. 点击 "System" > "Global credentials" > "Add Credentials"
4. 选择 "SSH Username with private key"
5. 配置以下信息:
- ID: `jenkins-ssh-key`
- Description: `Jenkins SSH Key for deployment`
- Username: `目标服务器用户名`
- Private Key: 选择 "Enter directly" 并粘贴私钥内容
- Passphrase: 留空(如果密钥没有密码)
步骤5:在Jenkins Pipeline中使用SSH
在Jenkinsfile中添加SSH步骤:
```groovy
stage('Deploy') {steps {script {// 使用SSH执行远程命令sshagent(['jenkins-ssh-key']) {sh '''ssh username@target-server-ip 'echo "连接到目标服务器成功"# 执行部署命令/opt/scripts/deploy-zj.sh''''}}}
}
```
常见问题排查
1. 权限问题
# 检查SSH目录权限
ls -la ~/.ssh/# 修复权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub
chmod 600 ~/.ssh/authorized_keys
2. SSH服务配置
确保目标服务器的 `/etc/ssh/sshd_config` 包含:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
3. 测试SSH连接
# 详细模式测试SSH连接
ssh -v username@target-server-ip# 使用指定密钥测试
ssh -i ~/.ssh/id_rsa username@target-server-ip
安全建议
1. 使用强密码或密钥密码
2. 定期轮换SSH密钥
3. 限制SSH用户权限
4. 使用防火墙限制SSH访问
5. 监控SSH登录日志