当前位置:首页 > 时尚

网页ssh

浏览器地址栏里敲下那串字符,网页回车,网页一个终端窗口就在网页里弹出来了。网页这玩意儿叫web ssh,网页说白了就是网页把SSH客户端搬进浏览器。我头一回用的网页时候心里直犯嘀咕——这不脱裤子放屁吗?本地装个Termius不比这强?直到有次在客户机房,他们的网页破电脑连个终端都没有,网管只丢给我一个URL。网页

那是网页个政府内网项目,服务器锁在铁皮机柜里,网页别说装第三方工具,网页连USB口都拿胶水堵死了。网页我打开浏览器输网址,网页页面加载完直接就是网页root@localhost的提示符。那一刻我忽然明白,网页网页SSH根本不是给讲究效率的开发者准备的,它是给那些被安全策略捆住手脚的运维狗准备的救命绳。

后来我研究了下原理。无非是后端起个进程,把SSH的输入输出流通过WebSocket转发到前端,浏览器再用xterm.js这种模拟器渲染出来。听起来简单,但细节全是坑。比如粘个长命令,光标位置错乱是家常便饭;窗口尺寸变了,终端不重绘,字符全叠成一团黑疙瘩。有些实现干脆放弃治疗,直接给你个文本框输命令,回车看输出,跟用telnet似的。

做得好的也有。我见过一个叫ttyd的项目,把OpenSSH直接编进二进制里,启动参数一传就完事。延迟低得跟本地终端没区别,滚动也不卡。还有个商业产品叫Wetty,界面做得跟macOS的Terminal似的,连配色都还原了。但这类好东西大多得自己部署,公网上的免费服务要么限速要么限会话时长,用起来总像隔靴搔痒。

说真的,网页SSH最大的价值不在技术,在管理。公司里上百台云服务器,总不能每台都配个公网IP吧?配个跳板机,上面挂个web ssh,员工拿浏览器就能连内网机器。权限控制直接在Nginx层做,谁访问过、执行过什么命令全有日志。审计部门查起来,比翻终端历史记录省事多了。

还有个场景是应急。某天半夜三点,线上服务挂了,你人在外面手机又没装SSH客户端。打开手机浏览器连上web ssh,虽然触屏敲命令别扭得要死,但至少能先重启个服务救急。等第二天到工位再慢慢排查。这种时候你根本顾不上什么用户体验,能连上就是胜利。

当然,这玩意儿也不是没毛病。浏览器里跑终端,等于把你的密钥托管给了网页应用。万一那站点被挂马,你的服务器就跟裸奔没区别。所以正经点的实现都得支持一次性token或者OAuth,用完即焚。有些偏执狂干脆禁用密码登录,强制密钥认证,还只允许从内网访问。

我最后悔的是没早点搞明白这些门道。以前总觉得命令行就得在终端里玩,瞧不上浏览器里的花架子。现在自己搭了个web ssh当跳板,出差带个Chromebook就能管所有服务器,轻得跟带本杂志似的。技术进步有时候就是这么别扭——你以为你在往前走,其实是被逼着换了条路,走着走着发现,嘿,居然更顺溜。

分享到: