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

如何解决Github Action部署EC2时的“No such device or address”致命错误

解决GitHub Action部署EC2时git拉取的PAT认证错误

问题场景

更新GitHub个人访问令牌(PAT)后,GitHub Action部署到AWS EC2时出现git拉取错误:

err: fatal: could not read Password for 'https://***@github.com': No such device or address

此前Action运行正常,仅在更换PAT后出现该问题。

原因分析

  1. 新PAT缺少仓库访问权限
  2. EC2环境中git缓存了旧认证信息,或全局配置写法导致认证失败
  3. GitHub Secrets变量在SSH脚本中未正确传递/解析

解决方案

1. 验证新PAT的权限

生成新PAT时,必须勾选repo权限组(包含repo:status、repo_deployment、public_repo等核心权限),确保拥有目标仓库的拉取权限。

2. 调整GitHub Action部署脚本

修改deploy步骤中的script部分,优化git配置和命令:

deploy:
  name: Deploy to UAT
  needs: integration-test
  runs-on: ubuntu-latest
  steps:
    - name: Checkout Code
      uses: actions/checkout@v2
    - name: Deploy to EC2 instance
      uses: appleboy/ssh-action@master
      with:
        host: ${{ secrets.EC2_HOST }}
        username: ${{ secrets.EC2_USERNAME }}
        key: ${{ secrets.SSH_PRIVATE_KEY }}
        envs: ACCESS_TOKEN
        script: |
          cd /var/www/html/
          # 清理旧的git配置和缓存
          git config --global --unset url."https://github.com/".insteadOf
          git config --global credential.helper ''
          # 使用环境变量传递PAT配置git
          git config --global url."https://${ACCESS_TOKEN}@github.com/".insteadOf "https://github.com/"
          # 指定分支拉取,避免默认分支冲突
          git pull origin uat
          # 无交互安装依赖
          composer install --no-dev --no-interaction --prefer-dist
          # 强制执行迁移(避免交互提示)
          php artisan migrate --seed --force
          sudo chown -R www-data:www-data .

关键调整点:

  • 先清理旧的insteadOf配置和credential缓存,避免冲突
  • 使用${ACCESS_TOKEN}环境变量传递PAT(已通过envs: ACCESS_TOKEN声明,EC2环境会自动加载)
  • 明确指定拉取origin uat分支,避免默认分支不匹配问题
  • 给composer install和artisan migrate添加无交互/强制参数,防止部署中断

3. 确认Secrets配置正确性

检查仓库的ACCESS_TOKEN Secrets:

  • 确保内容是新生成的完整PAT,无多余空格或字符
  • 确认Secrets已保存并应用到当前分支的Action中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:23:32