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

Github Actions部署SpringBoot到AWS EC2构建失败求助

问题

尝试用Github Actions + Docker自动部署SpringBoot项目到AWS EC2,已经在Github Secrets里配置了相关密钥,跟着教程写了YAML工作流,但执行时碰到SSH私钥加载错误和权限拒绝问题,附上配置和日志求解决。

工作流配置(.github/workflows/deploy.yml)

# 实际配置内容
name: EC2 Deployment
on:
  push:
    branches: [ main ]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Build Docker Image
        run: mvn spring-boot:build-image -Dspring-boot.build-image.imageName=my-app:latest
      
      - name: Deploy to EC2 via SSH
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.EC2_PUBLIC_IP }}
          username: ubuntu
          key: ${{ secrets.EC2_SSH_KEY }}
          script: |
            docker stop my-app || true
            docker rm my-app || true
            docker run -d -p 8080:8080 --name my-app my-app:latest

错误日志

Run appleboy/ssh-action@v1.0.3
Error: Failed to load SSH private key: invalid format
Error: Process completed with exit code 1

解决思路
  • 核对SSH私钥格式:检查Github Secrets里的EC2_SSH_KEY是不是完整的PEM格式,必须包含-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----两行,粘贴的时候别漏了换行或多加空格。
  • 修正EC2上的权限:登录EC2实例,把.ssh目录权限改成700,authorized_keys文件权限改成600,执行:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • 本地验证私钥可用性:用本地的私钥文件尝试SSH连接EC2,确认能正常登录:
    ssh -i your-private-key.pem ubuntu@ec2-public-ip
    
  • 处理Secrets里的换行问题:如果私钥粘贴到Secrets时自动去掉了换行,把私钥转成Base64编码后再存入Secrets,然后在工作流里解码使用:
    - name: Decode SSH Key
      run: |
        echo "${{ secrets.EC2_SSH_KEY_BASE64 }}" | base64 -d > /tmp/ec2-key.pem
        chmod 600 /tmp/ec2-key.pem
    - name: Deploy to EC2
      uses: appleboy/ssh-action@v1.0.3
      with:
        host: ${{ secrets.EC2_PUBLIC_IP }}
        username: ubuntu
        key_path: /tmp/ec2-key.pem
        script: |
          # 部署脚本
    
  • 检查工作流密钥引用:确保YAML里的密钥名称和Github Secrets里的完全一致,别打错字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:16:12