这个产品我花了大量时间打磨,并且已经完全用在了我日常的工作中
首先,我本身是 Termius 的长期订阅用户,Termius 带来跨端体验确实没得说,但就日常使用来看,很多操作都比较<不够直接>
比如:
- SFTP 的操作,硬生生和 SSH 会话标签分开,这是最大不便。
- 服务器的管理界面逻辑,很傻,我都设立分组了,为啥不能出个树形视图?
- 还有端口转发,跟 SFTP 坐一桌

总之,综合这些使用体验,我自己写了一个符合日常使用直觉的 SSH 客户端,它就是 WinSSH !
说来也是奇幻,早些年我技术还不够的时候就想做这样一款产品,名字也是叫 WinSSH ,甚至持有了 winssh.net 这个域名很长时间。
当时想的就做 Windows 客户端,最早一版用 C#+WPF 手搓出来的,但是问题太多,最主要的问题就是终端渲染。
当时我参考了一个叫 FluentTerminal 的开源项目,它是用 webview+xtermjs 解决终端渲染的问题,我第一版也是采用了类似的方案:CEF+xtermjs 。
最后整体完成了不到 30%,但是基本的 shell+sftp 操作是没有问题的,再后来就直接鸽了~
直到近几年 AI 彻底爆发,我又想到了 WinSSH ,我决定重新起航!
在过去的几个月里,我反复琢磨,要怎么去做?使用何种技术栈?怎么去设计交互界面?
最终选择了 electron+react+xtermjs+shadcn 这套成熟的体系,完成了跨平台桌面应用开发之旅!
先来张图

怎么样?是不是很眼熟?哈哈哈哈,没错,我采用了 vscode 的设计风格,完全扁平+多标签页的操作!
这里面我花了很多小心思在 SFTP 操作面板上
例如支持平铺视图和树形视图切换

相对丰富的右键菜单功能

支持拖拽文件/目录到终端

支持快捷跳转收藏/常用目录

端口转发

命令面板

历史命令记录这里使用了OSC 133扩展协议,所以连接 SSH 时会向服务器上传并注入脚本,脚本代码如下
__wsh_emit() { printf "\033]%s\033\134" "$1"; };
__wsh_b64() { printf "%s" "$1" | base64 | tr -d "\n"; };
if [ -n "$BASH_VERSION" ]; then
__wsh_state=A;
__wsh_pre() {
[ -n "$COMP_LINE" ] && return;
[ "$__wsh_state" = "C" ] && return;
__wsh_emit "633;E;$(__wsh_b64 "$BASH_COMMAND")";
__wsh_emit "133;C";
__wsh_state=C;
};
__wsh_post() {
__wsh_ec=$?;
[ "$__wsh_state" = "C" ] && __wsh_emit "133;D;$__wsh_ec";
__wsh_emit "133;P;Cwd=$PWD";
__wsh_emit "133;A";
__wsh_state=A;
};
trap "__wsh_pre" DEBUG;
PROMPT_COMMAND="__wsh_post${PROMPT_COMMAND:+;$PROMPT_COMMAND}";
elif [ -n "$ZSH_VERSION" ]; then
__wsh_pre() {
__wsh_emit "633;E;$(__wsh_b64 "$1")";
__wsh_emit "133;C";
};
__wsh_post() {
__wsh_ec=$?;
__wsh_emit "133;D;$__wsh_ec";
__wsh_emit "133;P;Cwd=$PWD";
__wsh_emit "133;A";
};
autoload -Uz add-zsh-hook;
add-zsh-hook preexec __wsh_pre;
add-zsh-hook precmd __wsh_post;
fi
觉得别扭的可以在设置里进行全局关闭,或者在服务器编辑页面也可以关闭
以上举例的这些操作都是会话标签级别的,大幅提升了操作效率
提一点我觉得很 OK 的功能,那就是<离开安全提醒>!真的有用!
比如我开了多个 SSH 会话,其中有测试环境的、有生产环境的、有其他巴拉巴拉的
然后我在某个服务器下操作了一段时间后切其他软件工作了,这时候我在其他软件工作一段时间后再切回 WinSSH 的时候,如果不注意就直接操作可能会误操作服务器(就是忘了)
那么这时候,WinSSH 就会有一个覆盖整个软件的提醒,告知你当前激活的标签是哪台服务器

好用!这个提醒可以在设置里面开关设置离开时长阈值
然后是数据隐私问题,WinSSH 全面开源,没有任何上报服务器的行为!
支持自动备份和 webDAV 数据同步,喜欢完 NAS 的朋友应该很赞同这个功能~哈哈

其他的就是一些常规功能了,大家可以去探索一下
最后
Github: https://github.com/lantongxue/winssh
唯一官网: https://winssh.net
想不到吧,我又把域名买回来了(吐槽:net 域名贵了好多,新购 90 ,续费 95 )
大佬们 Star 走起来!!!