头图

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

image

导言

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

  • 笔记本没带,服务器的 SSH 认证私钥只在笔记本上,没有私钥登不上去
  • 家里有台机器,但是网络受 NAT 的影响,出了门就连不回家里的内网,无法远程连接内网主机
  • 出于工作需要,在阿里云、腾讯云、华为云等等各种云上面买了一大堆机器,经常忘了自己有哪些机器,还不能统一管理
  • 运维要求 SSH 端口不能对外开放,连个 SSH 需要好几层堡垒机
  • 出门在外没有电脑,只有手机,想看看服务器的状态
  • ...

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

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

01. 面临的挑战

做技术的朋友肯定都熟悉终端,终端是管理计算机最简单直接的方式。为了让自己用起来更爽一点,我们决定对终端做一些加工,整理了一下,主要是下面几个问题需要解决:

  • 能连接远程服务器的终端

    • 服务器没有公网 IP 也要能连
    • 不开 ssh 服务也要能连
  • 支持对终端做远程协助

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

    • 可以使用账号密码登录,可以对指定用户免密登录
    • 需要在服务器留下标准登录日志

02. 设计思路

1. 服务端

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

image

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 就可以,参考下图:

image

03. 打开方式

  1. 微信扫码登录百川云平台
https://rivers.chaitin.cn/
  1. 绑定你的主机

image

  1. 点击在线终端 > 分享按钮,可以一键生成访问链接。

image

在另一个浏览器里打开分享链接,这时候就可以两边同步操作了,如丝一般顺滑。

image

除了远程协同,牧云主机管理助手还提供资源监控、文件管理等功能,且对普通个人用户都是免费的,但是如果你非常有钱,也十分感谢你能不吝打赏五毛~  我们为了讨同为死宅程序员们的欢心,还花了半晚上时间 P 图,定制了一套 Miku 皮肤,这里故意不说换肤入口,谁找到谁先用~

后续计划:

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

欢迎大家加 CTRivers 万能小助手 入群积极讨论:
发现 Bug 有 ¥8.88 的现金红包
提需求被采纳有 ¥8.88 的现金红包:

image

安全运维,安全开发,云计算,云安全

1 声望
0 粉丝
0 条评论
推荐阅读
牧云 • 主机管理助手|正式开放应用市场,梦幻联动雷池WAF等多款开源软件
上个月,我司长亭开源了雷池WAF,不到三天就吸引了超过上千个师傅使用,几个交流群里,师傅们讨论的热火朝天,其中两个话题引起了我们牧云 • 主机管理助手 ( Collie ) 团队的关注:

百川云开发者阅读 481

封面图
学会这些 Web API 使你的开发效率翻倍
随着浏览器的日益壮大,浏览器自带的功能也随着增多,在 Web 开发过程中,我们经常会使用一些 Web API 增加我们的开发效率。本篇文章主要选取了一些有趣且有用的 Web API 进行介绍,并且 API 可以在线运行预览。C...

九旬13阅读 1.6k

封面图
终于卷完了!Redis 打怪升级进阶成神之路(2023 最新版)!
是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。专注于key-value查询的redis、memcached、ttserver。

民工哥13阅读 1.1k

封面图
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥14阅读 2k

封面图
疫情已过,2023 我的前端面试记录
顺利入职。把我最近找工作的心得记录下来。工作交接确定 lastday整理手头工作,相关对接人、交接人放文档中工作交接过渡阶段。做好被咨询者,该拉人拉人,该拉群拉群平时沟通顺畅的同事如果没有 WX 可以加一个属...

linong11阅读 1.1k

思否 CTO 祁宁:社区问答是激荡高级智慧的头脑风暴
在祁宁家里,有一套完整的赛车模拟器,他甚至还请人到国外代购了最新的 VR 设备。作为沉浸式赛车游戏发烧友,除了享受速度与激情带来的愉悦感,祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。

万事ONES6阅读 13k评论 1

封面图
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...

民工哥7阅读 651

封面图

安全运维,安全开发,云计算,云安全

1 声望
0 粉丝
宣传栏