You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins流水线连接EC2实例报错:权限拒绝及主机密钥验证失败

解决Jenkins流水线连接EC2实例的权限与命令问题

1. 修复私钥权限错误

SSH对私钥的权限要求非常严格,设置777权限会被SSH直接拒绝,必须修正为安全的权限配置:

  • 调整私钥文件权限:
    sudo chmod 600 /home/ubuntu/.ssh/master.pem
    
  • 同步修正.ssh目录权限:
    sudo chmod 700 /home/ubuntu/.ssh
    
  • 确保Jenkins进程用户(通常是jenkins)能读取该文件,可修改文件所属组:
    sudo chown ubuntu:jenkins /home/ubuntu/.ssh/master.pem
    

2. 修正流水线命令逻辑

你当前的流水线存在逻辑错误:两个sh命令是独立执行的,第一个ssh仅连接EC2进入bash,执行完就回到Jenkins节点,第二个mkdir是在Jenkins本地执行的,根本没在EC2上生效。需要把命令合并到SSH会话中:

stage('Deploying App to Kubernetes') {
    steps {
        script {
            // 直接通过SSH在EC2上执行创建目录命令
            sh "ssh -i /home/ubuntu/.ssh/master.pem -o StrictHostKeyChecking=no ec2-user@52.15.183.121 'mkdir -p /home/ec2-user/poker'"
        }
    }
}
  • -o StrictHostKeyChecking=no用于跳过首次连接的主机密钥验证(测试环境可用,生产环境建议提前将EC2公钥添加到Jenkins节点的/home/ubuntu/.ssh/known_hosts)
  • mkdir -p可避免目录已存在时抛出错误

3. 额外排查项

如果仍有报错,先做以下验证:

  • 用Jenkins节点的ubuntu用户手动测试SSH连接:ssh -i /home/ubuntu/.ssh/master.pem ec2-user@52.15.183.121,确保手动能正常登录EC2
  • 检查EC2安全组是否允许Jenkins节点的IP通过22端口访问

内容的提问来源于stack exchange,提问作者chivas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:12:53