<返回更多

一个可以通过Web访问Linux终端的工具

2022-04-08    GitHub精选
加入收藏

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个通过Web访问设备终端的工具——rtty。

运维神器!一个可以通过Web访问Linux终端的工具

 

rtty由客户端和服务端组成。客户端采用纯C实现,服务端采用Go语言实现,前端界面采用vue实现。使用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的全功能终端
  • 部署简单,使用方便
运维神器!一个可以通过Web访问Linux终端的工具

 


运维神器!一个可以通过Web访问Linux终端的工具

 


运维神器!一个可以通过Web访问Linux终端的工具

 

 

客户端依赖

  • libev - 高性能的事件循环库
  • mbedtls(polarssl)、CyaSSl(wolfssl)或者openssl - 如果您需要支持SSL

部署服务端

1 从Release页面下载编译好的二进制文件或者自己编译

git clone https://github.com/zhaojh329/rttys

cd ui
npm install
npm run build
cd ..

./build.sh linux amd64

2 认证

  • Token

生成一个 token:

$ rttys token
Please set a password:******
Your token is: 34762d07637276694b938d23f10d7164

使用 token:

$rttys -t 34762d07637276694b938d23f10d7164
  • SSL 双向认证(mTLS)

您可以在配置文件中指定设备 CA 存储(有效文件)或在 CLI 中指定设备 CA 存储(参数 ssl-cacert) 来启用 mTLS。 存储中没有有效 CA 的设备将在 TLS 握手中断开连接。

3 运行服务

移动rttys可执行程序到/usr/local/bin/

sudo mv rttys /usr/local/bin/

拷贝配置文件到/etc/rttys/

sudo mkdir /etc/rttys
sudo cp rttys.conf /etc/rttys/

创建一个systemd单元文件: /etc/systemd/system/rttys.service

[Unit]
Description=rttys
After.NETwork.target

[Service]
ExecStart=/usr/local/bin/rttys run -c /etc/rttys/rttys.conf
TimeoutStopSec=5s

[Install]
WantedBy=multi-user.target

要首次启动该服务,请执行通常的systemctl操作

sudo systemctl daemon-reload
sudo systemctl enable rttys
sudo systemctl start rttys

可以通过以下方式停止服务

sudo systemctl stop rttys

4 数据库准备(Sqlite、MySQL 或者 Mariadb)

在数据库实例上,以root用户身份登录到数据库控制台

mysql -u root -p

创建将由 Rttys 使用的数据库用户,通过密码验证。本例使用 “rttys” 作为密码。请为您的实例使用安全密码

CREATE USER 'rttys' IDENTIFIED BY 'rttys';

使用 UTF-8 字符集和排序规则创建数据库。确保使用 utf8mb4 字符集而不是 utf8,因为前者支持基本多语言平面 之外的所有 Unicode字符(包括emojis)。另外,根据您期望的内容选择排序规则。如有疑问,请使用 unicode_ci 或general_ci

CREATE DATABASE rttys CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';

将数据库上的所有权限授予上面创建的数据库用户

GRANT ALL PRIVILEGES ON rttys.* TO 'rttys';
FLUSH PRIVILEGES;

 

安装rtty(针对Linux发行版)

安装依赖

sudo apt install -y libev-dev libssl-dev      # Ubuntu, Debian
sudo pacman -S --noconfirm libev openssl      # ArchLinux
sudo yum install -y libev-devel openssl-devel # centos

克隆rtty代码

git clone --recursive https://github.com/zhaojh329/rtty.git

编译

cd rtty && mkdir build && cd build
cmake .. && make install

运行rtty

将下面的参数替换为您自己的参数

sudo rtty -I 'My-device-ID' -h 'your-server' -p 5912 -a -v -d 'My Device Description'

如果您的 rttys 配置了一个 token,请加上如下参数(将下面的 token 替换为您自己生成的)

-t 34762d07637276694b938d23f10d7164

通过浏览器访问

使用 Web 浏览器访问您的服务器:
http://your-server-host:5913,然后点击连接按钮。

或者直接连接设备,无需 Web 登录(需要在服务端配置设备白名单)

http://your-server-host:5913/connect/devid1

http://your-server-host:5913/connect/devid2

从本地传输文件到远程设备

rtty -R

从远程设备传输文件到本地

rtty -S test.txt

 

—END—

开源协议:MIT

开源地址:
https://github.com/zhaojh329/rtty

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>