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但未获取到明确错误原因
咨询问题
Process exited with status 1错误的根本原因可能是什么?- Azure VM需配置哪些特定权限才能让SCP传输成功?
- 有哪些排查和解决该问题的建议?
解决方案与排查建议
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处于运行状态,并在本地组策略中允许密码登录
- 若为Linux VM:编辑
- 文件系统权限:确保目标路径的父目录(如
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日志,排查服务执行错误
- Linux VM:查看
- 延长超时时间:将
timeout参数从30s调整为5m,避免因网络延迟导致的超时失败
内容的提问来源于stack exchange,提问作者Muhammad Saqib Javed
相关产品推荐
相关产品推荐

