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

Github Workflow部署Python应用到Azure时私有依赖SSH认证失败

解决Azure Oryx部署阶段SSH认证失败问题

问题根源

部署阶段Oryx在Azure App Service的服务器环境中执行依赖构建,而非GitHub Action的Runner环境,你在deploy阶段配置的SSH密钥无法传递到Oryx的运行环境中,导致拉取私有GitHub仓库时认证失败。

可行解决方案

方案1:打包已构建好的虚拟环境(推荐)

在GitHub Action的build阶段完成所有依赖安装,将包含已安装依赖的虚拟环境一起打包部署,让Azure跳过Oryx的重新构建流程:

  1. 修改build阶段的Upload artifact步骤,取消排除venv目录:
- name: Upload artifact for deployment jobs
  uses: actions/upload-artifact@v2
  with:
    name: python-app
    path: . 
  1. 在Azure App Service的配置 > 应用设置中添加以下环境变量:
    • SCM_DO_BUILD_DURING_DEPLOYMENT = false:禁止Oryx在部署时自动构建
    • PYTHONPATH = /home/site/wwwroot/venv/lib/python3.7/site-packages:指定Python依赖路径
    • WEBSITE_VIRTUAL_APPLICATIONS = /:确保虚拟路径配置正确

方案2:改用HTTPS+GitHub PAT访问私有仓库

将requirements.txt中的SSH依赖地址替换为带GitHub个人访问令牌(PAT)的HTTPS地址,让Oryx能通过令牌认证拉取私有仓库:

  1. 在GitHub生成具有repo权限的PAT,并存入Azure App Service的应用设置(比如命名为GITHUB_PAT)

  2. 修改requirements.txt中的依赖地址:

-e git+https://${GITHUB_PAT}@github.com/Murphy-Hoffman/IBMi-MHC.git@57085a5e1f5637bfdd815397b45ba1b2dfd9b52c#egg=IBMi_MHC_db2&subdirectory=utility/db2
-e git+https://${GITHUB_PAT}@github.com/Murphy-Hoffman/IBMi-MHC.git@57085a5e1f5637bfdd815397b45ba1b2dfd9b52c#egg=IBMi_MHC_UNIT&subdirectory=IBMi/_UNIT
  1. 确保Azure App Service能识别环境变量,Oryx构建时会自动替换${GITHUB_PAT}为实际令牌值

方案3:在Azure App Service中配置SSH密钥(复杂)

将SSH私钥存入App Service的应用设置,通过启动脚本配置SSH环境:

  1. 在Azure App Service的应用设置中添加SSH_PRIVATE_KEY,值为你的私有密钥内容(注意格式要完整,包含-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----)

  2. 在项目根目录创建.deployment文件,内容如下:

[config]
command = bash -c "echo '$SSH_PRIVATE_KEY' > /home/site/.ssh/id_rsa && chmod 600 /home/site/.ssh/id_rsa && ssh-keyscan github.com >> /home/site/.ssh/known_hosts && pip install -r requirements.txt"

这种方法需要确保App Service的运行环境支持SSH命令,且密钥权限配置正确,相对容易出问题,不推荐优先使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:35:12