关于linux:面向技术爱好者的主机远程协同工具之开发指南

54次阅读

共计 1726 个字符,预计需要花费 5 分钟才能阅读完成。

导言

说起主机管理工具,你是否用过资源监控、终端治理、主机面板、远程桌面、堡垒机之类的工具来治理和监控主机,却仍旧面临以下问题:

  • 笔记本没带,服务器的 SSH 认证私钥只在笔记本上,没有私钥登不下来
  • 家里有台机器,然而网络受 NAT 的影响,出了门就连不回家里的内网,无奈近程连贯内网主机
  • 出于工作须要,在阿里云、腾讯云、华为云等等各种云下面买了一大堆机器,常常忘了本人有哪些机器,还不能对立治理
  • 运维要求 SSH 端口不能对外开放,连个 SSH 须要好几层堡垒机
  • 出门在外没有电脑,只有手机,想看看服务器的状态

作为一位研发 & 运维 & 平安技术爱好者,长期饱受以上问题的困扰。一次酒足饭饱后,与三个程序员一拍即合,决定做一个供本人应用的主机治理小工具。几天后公布了第一版,发现身边不少敌人都有同样的困扰,于是决定做一个公开服务,并正式给工具命名:牧云主机治理助手。上线不到一个月就有超过 1000 个敌人注册应用,这篇文章将分享玩法儿并揭秘开发思路,欢送同为技术爱好者前来体验交换~

在线体验:
https://rivers.chaitin.cn/

01. 面临的挑战

做技术的敌人必定都相熟终端,终端是治理计算机最简略间接的形式。为了让本人用起来更爽一点,咱们决定对终端做一些加工,整顿了一下,次要是上面几个问题须要解决:

  • 能连贯近程服务器的终端

    • 服务器没有公网 IP 也要能连
    • 不开 ssh 服务也要能连
  • 反对对终端做近程帮助

    • 多人同时对同一个终端进行操作
    • 观看近程操作时能复制终端里的文本
    • 反对录制终端操作,能重复观看
  • 安全性

    • 能够应用账号密码登录,能够对指定用户免密登录
    • 须要在服务器留下规范登录日志

02. 设计思路

1. 服务端

服务端架构绝对简略,在服务器上安装 Agent,用 Agent 拉起本地终端,用一台公网服务器做直达,通 Websocket 将终端的输入输出喂给前端,参考下图:

2. Web 终端

Web 终端采纳 Xterm.js,轮子不错,应用体验和本地终端基本一致,省了很多事,就是有几个小问题:

  • Bug 不少,字体偶然会跑飞
  • 性能有点拉跨,依赖 GPU,屏幕越大越卡
  • 受浏览器限度,Ctrl-w 和 esc 没法用

3. Agent

Agent 的局部,间接用 login 命令搞定

  1. login 程序间接调用就有一个看起来还不错的登录界面
  2. login -f 就能间接跳过明码认证免密登录
  3. login 本人会把登录日志写到 btmp 和 wtmp 里

这样一来 login 程序齐全满足需要,只须要把 login 过程的 stdint/stdout/stderr 和网络连接绑定起来就能够。不过也有小问题:centos 默认开了 selinux,会对 login 的登录行为有烦扰,root 无奈应用明码登录。

4. 协同计划

对于如何多人合作应用终端的问题,tmate 是目前被宽泛应用的计划,然而不合乎咱们的要求,咱们想要的计划:

  1. 不依赖 ssh 或其余客户端
  2. 不依赖公网环境,可穿透内网
  3. 能够抉择”只能观看终端“和”能够操作终端“两种模式
  4. 能反对文件上传下载

实现其实非常简单,只须要把 Agent 的输入输出复制进去,别离发给不同的 Websocket 就能够,参考下图:

03. 打开方式

  1. 微信扫码登录百川云平台

https://rivers.chaitin.cn/

  1. 绑定你的主机
  1. 点击在线终端 > 分享按钮,能够一键生成拜访链接。

在另一个浏览器里关上分享链接,这时候就能够两边同步操作了,如丝个别顺滑。

除了近程协同,牧云主机治理助手还提供资源监控、文件治理等性能,且对一般个人用户都是收费的,然而如果你十分有钱,也非常感激你能不吝打赏五毛~  咱们为了讨同为死宅程序员们的欢心,还花了半早晨工夫 P 图,定制了一套 Miku 皮肤,这里成心不说换肤入口,谁找到谁先用~

后续打算:

  1. Windows 版本:反对治理 Windows 主机
  2. 私有化版本:提供独立部署能力,给临时不方便使用 SaaS 服务的用户应用
  3. 开源:期待性能绝对欠缺后,我的项目源码最终咱们会以开源的形式回馈技术社区

欢送大家加 CTRivers 万能小助手 入群踊跃探讨:
发现 Bug 有 ¥8.88 的现金红包
提需要被驳回有 ¥8.88 的现金红包:

正文完
 0