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服务器上复制公钥内容:
   ```bash
   cat ~/.ssh/id_rsa.pub
   ```

2. 在目标服务器上创建或编辑authorized_keys文件:
   ```bash
   mkdir -p ~/.ssh
   chmod 700 ~/.ssh
   echo "ssh-rsa AAAA..." >> ~/.ssh/authorized_keys
   chmod 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
  1. SSH服务配置

确保目标服务器的 `/etc/ssh/sshd_config` 包含:

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

  1. 测试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登录日志