Jenkins服务器配置密钥对

发布于:2025-05-21 ⋅ 阅读:(20) ⋅ 点赞:(0)

1. 在 Jenkins 服务器上执行以下命令

# 生成 SSH 密钥对
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -N ""

# 查看公钥内容
cat ~/.ssh/id_rsa.pub

2. 将显示的公钥内容复制,然后在目标服务器上执行

# 在目标服务器上执行
mkdir -p /root/.ssh
chmod 700 /root/.ssh
echo "这里粘贴Jenkins服务器上生成的公钥" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

3. 在目标服务器上检查 SSH 配置

# 在目标服务器上执行
cat /etc/ssh/sshd_config | grep -E "PubkeyAuthentication|PasswordAuthentication|PermitRootLogin"

# 如果需要修改配置
vi /etc/ssh/sshd_config

# 确保以下设置正确:
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin yes

# 重启SSH服务
systemctl restart sshd

4. 配置完成后,在 Jenkins 服务器上测试连接

# 在Jenkins服务器上执行
ssh -v root@10.53.3.69

5. 如果你远程属性PasswordAuthentication不小心设置成false,以下是解决方案

pipeline {
    agent any

    environment {
        TARGET_SERVER = 'ip'
        JENKINS_HOME = '/var/lib/jenkins'
    }

    stages {
        stage('Modify SSH Config') {
            steps {
                script {
                    try {
                        // 修改 SSH 配置,启用密码认证
                        sh '''
                            echo "=== 修改 SSH 配置 ==="
                            ssh -F ${JENKINS_HOME}/.ssh/config ${TARGET_SERVER} "sudo sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config"

                            echo "=== 重启 SSH 服务 ==="
                            ssh -F ${JENKINS_HOME}/.ssh/config ${TARGET_SERVER} "sudo systemctl restart sshd"

                            echo "=== 验证配置 ==="
                            ssh -F ${JENKINS_HOME}/.ssh/config ${TARGET_SERVER} "cat /etc/ssh/sshd_config | grep PasswordAuthentication"
                        '''
                    } catch (Exception e) {
                        echo "Error: ${e.message}"
                        currentBuild.result = 'FAILURE'
                    }
                }
            }
        }
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到