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

使用GitHub Actions部署JS应用至AWS EC2时遇权限错误如何解决?

解决GitHub Actions部署EC2时的私钥加载与权限拒绝问题
  • 检查私钥格式完整性
    确保GitHub Secrets中存储的PRIVATE_KEY是完整的OpenSSH私钥格式,必须包含开头的-----BEGIN OPENSSH PRIVATE KEY-----和结尾的-----END OPENSSH PRIVATE KEY-----,且没有多余的换行、空格或截断。复制私钥时要完整复制整个文件内容。

  • 修正私钥写入命令
    原命令echo "$PRIVATE_KEY" > private_key可能因换行符处理错误导致私钥损坏,改用更可靠的写入方式:

    printf "%s" "$PRIVATE_KEY" > private_key && chmod 600 private_key
    

    或者直接使用GitHub官方推荐的ssh-agent动作管理私钥,避免手动处理文件:

    - name: 配置SSH代理
      uses: webfactory/ssh-agent@v0.7.0
      with:
        ssh-private-key: ${{ secrets.PRIVATE_KEY }}
    

    使用该动作后,后续SSH连接无需指定私钥文件,代理会自动处理。

  • 验证EC2端公钥与权限配置
    登录EC2实例,检查目标用户(如ec2-user或自定义用户)的~/.ssh/authorized_keys文件:

    • 确保文件中包含对应私钥的公钥完整内容
    • 设置正确的权限:chmod 600 ~/.ssh/authorized_keys,同时~/.ssh目录权限需为700,否则SSH会拒绝使用该密钥。
  • 排查网络与安全组限制

    • 确认EC2实例的安全组规则允许来自GitHub Actions服务器的SSH(22端口)连接,可临时开放0.0.0.0/0进行测试,排除网络拦截问题
    • 验证EC2实例的公网IP/域名正确,且服务器处于运行状态
  • 本地测试私钥有效性
    在本地环境使用该私钥尝试连接EC2:

    ssh -i /path/to/your/private_key ec2-user@<EC2_PUBLIC_IP>
    

    如果本地连接也失败,说明私钥本身无效,需要重新生成SSH密钥对,并将新的公钥添加到EC2的authorized_keys中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:42:43