win-sshpass:功能完整的 Windows SSH 命令行工具

在日常运维工作中,Windows 用户连接 Linux 服务器一直是个不大不小的痛点。PuTTY 功能完善但缺乏脚本化能力,OpenSSH 客户端虽然强大但密码交互不够友好,而 Linux 上的 sshpass 工具在 Windows 平台又长期缺席。win-sshpass 或许可以一试。 AI 编程助手接管服务器管理,也挺方便。

与 AI 编程助手的配合

近两年,Claude Code、Codex CLI 等 AI 编程助手逐渐进入开发者的日常。这些工具本质上是运行在终端里的智能代理,通过执行命令来完成编写代码、运行测试、操作文件系统等任务,也包括管理远程服务器。

win-sshpass 的非交互式设计正好满足了 AI 代理的需求------AI 无法在密码提示符前等待用户输入,也不能像人一样切换窗口去粘贴密码。win-sshpass 让这一切变得可脚本化:

ruby 复制代码
# AI 代理可以直接执行远程部署
win-sshpass -p $DEPLOY_PASS -h 10.0.0.5 -u deploy -c \
  "cd /app && docker compose pull && docker compose up -d"

# 上传配置文件同样简单
win-sshpass -p $DEPLOY_PASS scp nginx.conf deploy@10.0.0.5://etc/nginx/sites-enabled/

# 远程健康检查
win-sshpass -p $DEPLOY_PASS -h 10.0.0.5 -u deploy -c \
  "curl -s localhost:8080/health"

几个特性让 AI 代理使用起来特别顺手:

  • 零交互:密码通过命令行传入,AI 代理不会卡在认证环节
  • 明确的退出码:命令执行后返回准确的退出码,AI 能据此判断执行结果
  • 清晰的错误信息:连接失败或文件传输出错时,错误信息可读性好,AI 能据此调整操作
  • 支持环境变量:密码可以通过 SSHPASS 环境变量注入,无需在命令中明文暴露

CLAUDE.md 或项目说明中配置好服务器连接信息,对 AI 说一句"帮我把新版本部署到生产服务器",登录、上传、部署、验证,AI 都能通过 win-sshpass 自动完成。

能做什么

win-sshpass 是一个 Windows 平台的 SSH 客户端工具,支持在命令行中传递密码,同时提供了文件传输、交互式 Shell、rz/sz 文件选择等一系列周边功能,让自动化脚本和批处理任务变得简单直接:

远程命令执行

perl 复制代码
# 单次命令执行
win-sshpass -p password -h 192.168.1.1 -u root -c "uptime"

# sshpass 风格
win-sshpass -p password ssh root@192.168.1.1 "ls -la /var/log"

文件传输

支持 SCP 和 Rsync 风格的传输,底层基于 SFTP:

ruby 复制代码
# 上传
win-sshpass -p password scp file.txt root@host:/tmp/

# 下载
win-sshpass -p password scp root@host:/tmp/file.txt ./

# rsync 风格
win-sshpass -p password rsync -avz ./local/ root@host:/backup/

交互式 Shell

css 复制代码
win-sshpass -p password ssh root@192.168.1.1

支持终端大小自适应,可以用熟悉的命令行体验操作远程服务器。

文件选择器与 rz/sz 支持

在交互式 Shell 中,可以通过 rz/sz 协议进行文件的上传和下载,工具会弹出 Windows 原生的文件选择对话框,在图形界面和命令行之间取得了一个不错的平衡。

多种认证方式

win-sshpass 不局限于密码认证。它支持:

  • 密码直接传递(-p)
  • 密码文件读取(-f)
  • 环境变量读取(-e,配合 SSHPASS 环境变量)
  • 私钥认证(-i)
  • 配置文件模式,支持多主机配置

安装方式

win-sshpass 提供了三种安装途径:

  • MSI 安装包:从 GitHub Releases 下载,双击安装
  • 独立 exe:下载 sshpass.exe 直接运行,绿色便携

SDK 调用

除了命令行工具,win-sshpass 也提供了 Go SDK,可以在代码中直接调用:

go 复制代码
import sshpass "github.com/chuccp/win-sshpass"

client, err := sshpass.NewClient(cfg)
defer client.Close()
client.Exec("docker ps")

通过 SDK 可以灵活控制 SSH 连接、文件传输、Shell 会话等,适合集成到自己的运维工具或自动化流程中。

小结

win-sshpass 解决的是 Windows 平台上 SSH 自动化管理,用于命令行脚本和批处理场景,让 Windows 用户也能方便地通过命令行管理远程服务器。

如果在 Windows 上做运维,或者需要在 CI/CD 流程中连接 Linux 服务器,这个工具值得一试。


最新版本和 SDK 文档见 GitHub

github.com/chuccp/win-...

相关推荐
Java20151 天前
Docker、Nginx、Webhook三重门——我用两天才把网站部署成功
自动化运维
考虑考虑6 天前
kafka4安装
后端·kafka·自动化运维
SkyWalking中文站8 天前
认识 Horizon UI · AI Assistant:用日常语言查询你的可观测性数据
运维·监控·自动化运维
SkyWalking中文站8 天前
认识 Horizon UI · 17/17:安装与迁移
运维·监控·自动化运维
SkyWalking中文站8 天前
认识 Horizon UI · 16/17:八种语言的本地化
运维·监控·自动化运维
SkyWalking中文站8 天前
认识 Horizon UI · 15/17:用模板定制控制台
运维·监控·自动化运维
路长慢慢9 天前
独立开发者的AI编程流水线:从需求到上线的48小时实录
自动化运维
SkyWalking中文站10 天前
认识 Horizon UI · 11/17:运行时规则与实时调试
运维·监控·自动化运维