如何通过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
相关产品推荐
相关产品推荐

