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

如何通过SSH与GitHub Actions在Windows Server上运行bat文件?

通过GitHub Actions + SSH 在Windows Server上运行bat文件

1. 配置Windows Server的SSH服务

  • 以管理员身份打开PowerShell,执行以下命令安装OpenSSH服务:
    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
    
  • 启动服务并设置开机自启:
    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
    
  • 配置防火墙允许SSH端口(默认22):
    New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH SSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
    

2. 配置GitHub仓库密钥

进入你的GitHub仓库,依次点击Settings -> Secrets and variables -> Actions,添加以下密钥:

  • SSH_HOST:Windows Server的公网IP或域名
  • SSH_USERNAME:Windows Server上拥有执行权限的用户名
  • SSH_PASSWORD:对应用户的登录密码(推荐用SSH密钥替代,更安全)

3. 编写GitHub Actions工作流文件

在仓库根目录创建.github/workflows/run-bat.yml,内容如下:

name: Execute Bat File on Windows Server

on:
  push:
    branches: [ main ] # 可自定义触发分支
  workflow_dispatch: # 支持手动触发

jobs:
  run-bat-job:
    runs-on: ubuntu-latest
    steps:
      - name: Connect via SSH and run bat
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USERNAME }}
          password: ${{ secrets.SSH_PASSWORD }}
          # 若用SSH密钥,替换为 key: ${{ secrets.SSH_KEY }}
          script: |
            # 替换为你的bat文件实际路径
            cmd /c "C:\path\to\your\script.bat"

4. 关键注意事项

  • 路径格式:Windows路径使用反斜杠,需用引号包裹避免YAML解析问题
  • SSH密钥替代密码:生成SSH密钥对后,将公钥写入Windows Server的C:\Users\<用户名>\.ssh\authorized_keys文件,同时在GitHub Secrets中添加私钥作为SSH_KEY
  • 权限问题:确保执行bat文件的用户拥有足够权限,必要时用runas /user:admin "cmd /c C:\script.bat"提升权限
  • 静默执行:若bat文件有交互逻辑,需添加对应参数让其静默运行(如script.bat /silent)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 13:01:07