win-sshpass:Windows 上最方便的非交互式 SSH 工具

18 阅读2分钟

原版 sshpass 主要为 Linux/Unix 设计,在 Windows 上无法原生运行(通常需要 WSL、Cygwin 或其他折腾)。
win-sshpass 是纯 Go 语言开发的 Windows 原生工具,单个 .exe 文件,开箱即用,完全不依赖系统 OpenSSH。它不仅实现了非交互式密码认证,还大幅增强了实用功能,特别适合脚本化和自动化场景:

  • 支持密码和私钥(-i)两种认证方式
  • 内置 SFTP,支持递归目录上传/下载 + 进度条(大文件夹传输也不卡)
  • 支持 SCP 风格和 rsync 风格语法
  • 支持配置文件管理多台服务器,一键切换
  • 密码输入方式灵活:-p、环境变量 SSHPASS、文件 -f

实际使用示例(像 AI CLI 一样一条命令搞定)执行远程命令:

cmd

win-sshpass -p "你的密码" ssh user@server.com "whoami && uptime && df -h"

使用私钥认证:

cmd

win-sshpass -i C:\Users\YourName.ssh\id_ed25519 ssh user@server.com "hostname"

上传单个文件或整个目录(递归):

cmd

win-sshpass -h server.com -p "你的密码" -local .\dist\ -remote //var/www/html

下载文件:

cmd

win-sshpass -h server.com -p "你的密码" -d -remote //var/log/app.log -local .\logs\

SCP 风格上传:

cmd

win-sshpass -p "你的密码" scp .\app.jar user@server.com://opt/app/

使用环境变量(脚本中最推荐的方式):

cmd

set SSHPASS=你的密码
win-sshpass -e ssh user@server.com "deploy.sh"

使用配置文件管理多服务器(类似项目上下文,一键切换): 创建 server.config 文件:

host: example.com
username: root
password: your_password
port: 22
# key: C:\path\to\id_ed25519   # 可选私钥

然后直接运行:

cmd

win-sshpass -f server.config -c "systemctl restart nginx"

核心优势

  • 真正 Windows 原生:无需 WSL 或额外环境,一个 exe 走天下
  • 功能丰富:比传统 sshpass 多了内置 SFTP 递归传输、进度显示、私钥支持和配置文件
  • 高度脚本化:完美适配 PowerShell、CMD、Git Bash、Jenkins、GitHub Actions 等
  • 路径处理贴心:在 Git Bash 中远程路径建议加 // 前缀(如 //tmp/),避免被 Windows 自动转换

安装超级简单(几秒完成)

  1. 访问最新 Releases:github.com/chuccp/win-…
  2. 下载 win-sshpass-*.zip
  3. 解压得到 win-sshpass.exe,放入任意目录并加入系统 PATH

从此,你的 Windows 自动化流程将拥有和 Linux sshpass 一样流畅的非交互体验!适用场景:

  • 日常服务器运维脚本
  • CI/CD 自动部署
  • 批量服务器管理与文件同步
  • 本地开发与远程测试/生产环境联动
  • 结合各类 AI CLI 工具,实现“本地生成代码 → 一键远程部署”的完整闭环