原版 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 自动转换
安装超级简单(几秒完成)
- 访问最新 Releases:github.com/chuccp/win-…
- 下载 win-sshpass-*.zip
- 解压得到 win-sshpass.exe,放入任意目录并加入系统 PATH
从此,你的 Windows 自动化流程将拥有和 Linux sshpass 一样流畅的非交互体验!适用场景:
- 日常服务器运维脚本
- CI/CD 自动部署
- 批量服务器管理与文件同步
- 本地开发与远程测试/生产环境联动
- 结合各类 AI CLI 工具,实现“本地生成代码 → 一键远程部署”的完整闭环