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

GitHub Actions:使用scp-action传文件至Azure VM失败(状态码1)

问题描述

场景与工作流配置

尝试使用appleboy/scp-action@v0.1.1 GitHub Action将FreeToGo-1.0.0.jar传输至Azure虚拟机,工作流配置如下:

- name: Transfer JAR to Azure VM
  uses: appleboy/scp-action@v0.1.1
  with:
    host: ${{ secrets.AZURE_VM_IP }}
    username: ${{ secrets.AZURE_VM_USER }}
    password: ${{ secrets.AZURE_VM_PASSWORD }}
    source: FreeToGo-1.0.0.jar
    target: C:/Users/${{ secrets.AZURE_VM_USER }}/Desktop/FreeToGo/Github
    port: 22
    timeout: 30s
    debug: true

报错信息

Action执行失败,报错内容:

tar all files into `/tmp/210630603/HRFZPg9wLX.tar
$ tar -cf /tmp/210630603/HRFZPg9wLX.tar FreeToGo-1.0.0.jar
scp file to server.
create folder C:/Users/***/Desktop/FreeToGo/Github
drone-scp error:  Process exited with status 1
drone-scp rollback: remove all target tmp file
remove file HRFZPg9wLX.tar
2025/01/22 18:38:42 Process exited with status 1

已完成的排查

  • 验证Azure VM的IP、用户名、密码等凭证均正确
  • 确认GitHub工作区中存在FreeToGo-1.0.0.jar文件
  • 启用debug: true但未获取到明确错误原因

咨询问题

  1. Process exited with status 1错误的根本原因可能是什么?
  2. Azure VM需配置哪些特定权限才能让SCP传输成功?
  3. 有哪些排查和解决该问题的建议?

解决方案与排查建议

1. Process exited with status 1的可能根本原因

  • 路径格式不兼容:appleboy/scp-action基于Linux环境开发,Windows风格的C:/路径可能无法被识别,导致创建目录失败
  • 目标目录创建失败:如果FreeToGo/Github或其父目录不存在,Action可能无法自动创建多级目录;或者用户对Desktop目录没有写入权限,无法创建子目录
  • SSH服务配置问题:Azure VM默认可能禁用SSH密码登录(尤其是Linux VM),或未安装OpenSSH Server(Windows VM),导致SCP连接后执行创建目录命令失败
  • 网络超时或端口限制:虽然日志显示开始传输,但实际创建目录时网络超时,或Azure NSG未正确放行22端口

2. Azure VM需配置的权限与设置

  • 网络层面:在Azure门户的VM网络安全组(NSG)中,添加入站规则允许22端口(SSH/SCP)的流量
  • SSH服务配置:
    • 若为Linux VM:编辑/etc/ssh/sshd_config,设置PasswordAuthentication yes,然后重启sshd服务(sudo systemctl restart sshd)
    • 若为Windows VM:安装OpenSSH Server组件,在服务中确保OpenSSH SSH Server处于运行状态,并在本地组策略中允许密码登录
  • 文件系统权限:确保目标路径的父目录(如C:/Users/xxx/Desktop)对指定用户有写入权限,若目标目录不存在,用户需具备创建目录的权限

3. 排查与解决建议

  • 修正目标路径格式:将Windows风格路径改为Linux兼容格式,比如把C:/Users/...替换为/c/Users/${{ secrets.AZURE_VM_USER }}/Desktop/FreeToGo/Github,或用转义反斜杠C:\\Users\\...
  • 手动测试SCP连接:在本地终端执行SCP命令测试传输,比如:
    scp -P 22 FreeToGo-1.0.0.jar $AZURE_VM_USER@$AZURE_VM_IP:/c/Users/$AZURE_VM_USER/Desktop/FreeToGo/Github
    
    手动测试能暴露具体的权限或路径错误
  • 检查目标目录状态:先手动在Azure VM上创建C:/Users/xxx/Desktop/FreeToGo/Github目录,再重新运行Action,排除目录创建失败的问题
  • 升级Action版本:v0.1.1版本较老,替换为最新版appleboy/scp-action@v0.1.5,新版本可能修复了路径解析和目录创建的bug
  • 查看VM端SSH日志:
    • Linux VM:查看/var/log/auth.log日志,获取SCP连接时的具体错误
    • Windows VM:打开事件查看器,查看应用程序和服务日志 > OpenSSH > Operational日志,排查服务执行错误
  • 延长超时时间:将timeout参数从30s调整为5m,避免因网络延迟导致的超时失败

内容的提问来源于stack exchange,提问作者Muhammad Saqib Javed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:26:17