一、webssh
项目简介
完全java开发,项目结构简单,代码逻辑简单。Springboot项目,直接jar包运行。
技术分析
基于WebSocket
特点
- 项目页面简单,只支持上传
- 可实现用户免密到控制台
github地址:https://github.com/fuchengjie/WebSSH/tree/master
二、rtty与rttys
服务端RTTYS(后端)
rttys 是一个开源项目,旨在提供一种高效、可靠的实时文本流同步工具,尤其适用于远程SSH会话和串口通信。如果你经常需要在不同设备或环境中进行终端操作,rttys将为你带来极大的便利。
项目简介
服务端采用GO语言实现,前端界面采用vue实现。rttys的核心功能是实现文本数据的实时双向同步。这意味着你可以在一个地方启动SSH连接或打开串口,然后在任何其他设备上查看和交互这些会话,无需担心丢失任何信息。这对于团队协作、远程技术支持,甚至个人多设备工作流程都有显著提升。
开源代码链接地址:https://github.com/zhaojh329/rttys.git
或者https://gitee.com/zhaojh329/rttys.git
技术分析
基于WebSocket:rttys 使用 WebSocket 协议作为其主要的数据传输层,这使得它能在Web浏览器和其他支持WebSocket的客户端上无缝工作。
实时与可靠:通过优化的数据压缩和高效的错误恢复机制,rttys 能确保在不稳定网络环境下依然保持良好的实时性和数据完整性。
轻量级:rttys 的设计非常简洁,没有依赖大型库,可以在各种操作系统上轻松部署,包括Linux、Windows和macOS。
安全特性:利用了SSH的安全性,rttys 可以加密传输数据,保护你的会话不被窃听。
应用场景
跨设备协作:团队成员可以共享同一SSH会话,即时查看和讨论操作过程,提高工作效率。
远程支持:技术支持人员可以通过rttys远程协助用户解决问题,无需用户提供密码,只需分享一个会话ID。
移动办公:在外时,你可以通过手机或平板上的浏览器访问家里的服务器或开发环境。
云环境管理:借助rttys,你可以在任何有网络的地方管理你的云服务器。
特点
- 易用性:通过简单命令行接口即可启动和停止同步,无需复杂的配置。
- 跨平台:支持多种操作系统,并且可以配合不同类型的客户端使用。
- 可扩展性:rttys 设计为模块化,方便添加新的数据源或适配器。
- 自托管:你可以自行部署rttys,保证数据隐私和安全性。
客户端RTTY(设备端)
rtty由客户端和服务端组成。客户端采用纯C实现,使用rtty可以在任何地方通过Web访问您的设备的终端,通过设备ID来区分您的不同的设备。rtty非常适合远程维护Linux设备。
特点
- 客户端 C 语言实现,非常小,适合嵌入式 Linux
- 不支持 SSL:rtty(32K) + libev(56K)
支持的SSL:+ libmbedtls(88K) + libmbedcrypto(241K) + libmbedx509(48k)
- 远程批量执行命令
- 支持SSL:openssl, mbedtls, CyaSSl(wolfssl)
- SSL 双向认证(mTLS)
- 非常方便地上传和下载文件
- 根据设备ID访问不同的设备
- 支持 HTTP 代理 - 访问您的设备的 Web
- 基于Xterm.js的全功能终端
- 部署简单,使用方便
rtty的github开源代码链接地址:https://github.com/zhaojh329/rtty.git
或者https://gitee.com/zhaojh329/rtty.git
Rttys及Rtty的交叉编译
Rttys官方的Release仅提供amd64与arm64的版本,并没有armhf的版本,且并不支持将rttys部署到子目录下。因此需要手工交叉编译一个Rttys。
效果图:
不同点:webssh使用java开发,页面使用H5。不需要安装客户端,页面效果差,操作性差
无列表管路,切换服务器可灵活传参,跳转控制台不需要输入账户密码
rtty使用c,服务端使用go,页面vue。需要安装客户端,页面效果好,操作性好
客户端可进行列表管理,可跳转远程服务器web服务,跳转控制台需要输入账 户密码
共同点:轻量级
需要搭建服务器
压测结果: