说到主机管理工具,您是否曾经使用过资源监控、终端管理、主机面板、远程桌面、堡垒主机等工具来管理和监控主机,但仍然面临以下问题:

我没有带笔记本电脑。服务器的SSH 认证私钥仅在我的笔记本电脑上。没有私钥我无法登录。我家里有一台机器,但是网络受NAT影响。外出时无法连接家庭网络,远程也无法连接。由于工作需要,网络主机在阿里云、腾讯云、华为云等各个云上购买了很多机器,经常忘记自己有哪些机器,无法统一管理和操作。 SSH端口无法对外开放。即使SSH 也需要多层堡垒机。我出门在外没有电脑,只有手机。我想检查服务器的状态.

阅读下面的全文并免费试用

0x01 面临的挑战

技术朋友一定对终端很熟悉,这是管理计算机最简单、最直接的方式。为了让使用起来更加舒适,我们决定对终端进行一些处理,并进行了整理。主要需要解决以下问题:

可以连接到远程服务器的终端服务器即使没有公共IP 地址也必须能够连接。 ssh 服务也必须能够连接。

支持终端远程协助。多人可以同时操作同一个终端。支持录制终端操作并可反复观看。

为了安全起见,您可以使用帐号和密码登录,指定用户也可以免密码登录。您需要在服务器上留下标准的登录日志。

0x02 设计思路

2.1 服务器

服务器端架构比较简单。在服务器上安装Agent,使用Agent拉起本地终端,使用公网服务器作为中继,将终端的输入输出通过Websocket喂给前端。参考下图:

2.2 网页端

Web终端使用Xterm.js,它有一个很好的轮子。用户体验与本地终端基本相同。它节省了很多东西,但有一些小问题:

有很多错误。字体有时会用完。性能有点慢。它依赖于GPU。屏幕越大,卡住的情况就越严重。它受到浏览器的限制。无法使用Ctrl-w 和esc。

2.3 代理

对于Agent部分,直接使用登录命令即可。

如果直接调用登录程序,就会出现一个看起来不错的登录界面。 Login -f 可以直接跳过密码验证,无需密码即可登录。登录日志将写入btmp和wtmp。

这样登录程序就完全满足要求了,只需要将登录进程的stdint/stdout/stderr绑定到网络连接上即可。不过还有一个小问题:centos默认开启了selinux,会干扰login的登录行为,root无法使用密码登录。

酒足饭饱后,我开发了一个小工具,没想到一炮而红!

2.4 协同解决方案

关于多人协同使用终端的问题,tmate是目前广泛使用的解决方案,但它并不能满足我们的要求。我们想要的解决方案是:

不依赖ssh或其他客户端,不依赖公网环境。可以穿透内网。您可以选择“只能查看终端”和“可以操作终端”。两种模式均可支持文件上传和下载。

处理几个细节后就可以使用它了:

多人使用时,每个人的屏幕尺寸不同,col和row需要同时调整.

0x03 打开方式

扫描微信二维码登录百川平台

https://rivers.chaitin.cn/workbench?promotion=a46555d83883b379c6e77c7a085dc1da

绑定你的主机

3.1 在线终端

3.2 资源监控

3.3 文件管理

交互细节是从微软的资源管理器复制(引用)的(希望比Mac的Finder更容易使用)。目前仅具有目录列表、上传下载功能,后续将增加快速查看和在线编辑功能。

0x04写在最后

自从工具内测以来,装机量的持续提升一直是我们加班加点的动力。该工具目前仍处于“公测”阶段,其收到的需求已经压倒了待办事项列表。至少在接下来的一年里,它会保持高速迭代的状态,每周一次小更新,每月一次大更新。最近,为了讨好各位宅男程序员,我们花了半个晚上的时间P图,定制了一套Miku皮肤。这里我们故意不提换皮入口,谁找到就先用吧~

后续计划:

Windows版本:支持Windows主机的管理。私有版:为暂时不方便使用SaaS服务的用户提供独立部署能力。开源:在功能相对完善后,项目源码最终会以开源的方式回馈给技术社区。

用户评论

呆萌

哇,一看标题就感觉作者是个技术高手!我也要试试开发个小工具,说不定能火呢!

标签: