看技术大神如何玩转「终端远程协助」
· 前言 ·
在线体验:
https://rivers.chaitin.cn/workbench?promotion=a46555d83883b379c6e77c7a085dc1da
0x01 面临的挑战
能连接远程服务器的终端
服务器没有公网 IP 也要能连
不开 ssh 服务也要能连
支持对终端做远程协助
多人同时对同一个终端进行操作 观看远程操作时能复制终端里的文本 支持录制终端操作,能反复观看
安全性
可以使用账号密码登录,可以对指定用户免密登录
需要在服务器留下标准登录日志
0x02 设计思路
Web 终端采用 Xterm.js,轮子不错,使用体验和本地终端基本一致,省了很多事,就是有几个小问题:
Bug 不少,字体偶尔会跑飞 性能有点拉跨,依赖 GPU,屏幕越大越卡 受浏览器限制,Ctrl-w 和 esc 没法用
Agent 的部分,直接用 login 命令搞定
login 程序直接调用就有一个看起来还不错的登录界面 login -f 就能直接跳过密码认证免密登录 login 自己会把登录日志写到 btmp 和 wtmp 里
这样一来 login 程序完全满足需求,只需要把 login 进程的 stdint/stdout/stderr 和网络连接绑定起来就可以。不过也有小问题:centos 默认开了 selinux,会对 login 的登录行为有干扰,root 无法使用密码登录。
关于如何多人协作使用终端的问题,tmate 是目前被广泛使用的方案,但是不符合我们的要求,我们想要的方案:
不依赖 ssh 或其他客户端
不依赖公网环境,可穿透内网
可以选择 ”只能观看终端“ 和 ”可以操作终端“ 两种模式
能支持文件上传下载
几个细节处理一下就可以用了:
多人使用时,每个人的屏幕大小不同,需要同步调整 col 和 row
加入分享时如果一直没有输入可能会什么也看不到,需要缓存一下输出流的历史信息
全屏应用如果只刷新局部,加入分享时看起来也会比较奇怪
等等...
0x03 玩法说明
1. 微信扫码登录百川平台
https://rivers.chaitin.cn/workbench?promotion=a46555d83883b379c6e77c7a085dc1da
0x04 写在最后
除了远程协同,牧云主机管理助手还提供资源监控、文件管理等功能,且对普通个人用户都是免费的,但是如果你非常有钱,也十分感谢你能不吝打赏五毛~ 我们为了讨同为死宅程序员们的欢心,还花了半晚上时间 P 图,定制了一套 Miku 皮肤,这里故意不说换肤入口,谁找到谁先用~
后续计划:
Windows 版本:支持管理 Windows 主机
私有化版本:提供独立部署能力,给暂时不方便使用 SaaS 服务的用户使用
开源:等待功能相对完善后,项目源码最终我们会以开源的方式回馈技术社区
.
END
微信扫码关注该文公众号作者