歡迎光臨
每天分享高質量文章

rtty:反向代理 WebTTY ,Linux 遠端維護除錯工具

rtty 非常適合遠端維護你的或者你公司的部署在全球各地的成千上萬的 Linux 裝置。
— 趙建輝


致謝
轉載自 | https://github.com/zhaojh329/rtty
 作者 | 趙建輝

rtty 是一個反向代理 WebTTY。它由客戶端和服務端[1]組成。服務端採用 Go 語言實現, 以及使用了 vue + iview。你可以基於你設定的裝置 ID(不設定則為裝置的 MAC 地址)透過 Web 瀏覽器訪問你的任意一臺終端。

rtty 非常適合遠端維護你的或者你公司的部署在全球各地的成千上萬的 Linux 裝置。

特性

◈ 部署簡單,使用方便
◈ 反向代理
◈ 根據你設定的 ID 連線你的裝置
◈ 基於 Xterm.js 的全功能終端
◈ 支援 SSL: openssl、mbedtls、 CyaSSl(wolfssl)
◈ 支援上傳檔案到裝置
◈ 支援從裝置下載檔案
◈ 支援遠端執行命令
◈ 跨平臺: macOS、Linux、FreeBSD/OpenBSD、OpenWrt/LEDE

客戶端依賴

◈ libubox – 用於 OpenWrt 的 C 工具函式庫,但也可以用於其他 Linux 系統中。(參考[2][2]
◈ libuwsc – 一個輕量的針對嵌入式 Linux 的基於 libubox 的 WebSocket 客戶端 C 庫。
◈ ustream-ssl – 如果你需要支援 SSL

◈ mbedtls – 如果你選擇 mbedtls 作為你的 SSL 後端
◈ CyaSSl(wolfssl) – 如果你選擇 wolfssl 作為你的 SSL 後端
◈ openssl – 如果你選擇 openssl 作為你的 SSL 後端

部署服務端

安裝

  1. curl https://raw.githubusercontent.com/zhaojh329/rttys/master/install.sh | sudo sh

手動執行

  1. rttys -cert /etc/rttys/rttys.crt -key /etc/rttys/rttys.key

後臺執行

  1. sudo /etc/init.d/rttys start

如何編譯和安裝 rtty 客戶端

針對 Linux 發行版,例如 Ubuntu 和 CentOS

安裝編譯工具:

  1. sudo apt install gcc cmake git      # For Ubuntu

  2. yum install gcc cmake git           # For Centos

編譯和安裝依賴軟體包:

  1. sudo apt install libjson-c-dev      # For Ubuntu

  2. sudo apt install json-c-devel       # For Centos

  3. git clone https://git.openwrt.org/project/libubox.git

  4. cd libubox && cmake -DBUILD_LUA=OFF . && sudo make install

  5. git clone https://github.com/zhaojh329/libuwsc.git

  6. cd libuwsc && cmake -DUWSC_SSL_SUPPORT=OFF . && sudo make install

編譯和安裝 rtty:

  1. git clone https://github.com/zhaojh329/rtty.git

  2. cd rtty && cmake . && sudo make install

執行 rtty ,將下麵的引數替換為你自己的引數:

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

查詢線上裝置串列:

  1. curl -k https://your-server:5912/devs

  2. [{"id":"My-device-ID","description":"My device"}]

嵌入式Linux平臺

你需要自行交叉編譯。

如何在 OpenWRT 中使用

安裝:

  1. opkg update

  2. opkg list | grep rtty

  3. opkg install rtty-nossl

如果安裝失敗,你可以自己編譯[3]

配置伺服器引數:

  1. uci add rtty rtty   # If it's the first configuration

  2. uci set rtty.@rtty[0].host='your server host'

  3. uci set rtty.@rtty[0].port='your server port'

你可以給你的裝置自定義一個 ID。如果未指定,rtty 將使用指定的網路介面的 MAC 地址作為其 ID, 以 MAC 地址作為 ID 的格式為:1A2A3A4A5A6A

  1. uci set rtty.@rtty[0].id='your-device-id'

使用 SSL:

  1. uci set rtty.@rtty[0].ssl='1'

儲存配置並應用:

  1. uci commit

  2. /etc/init.d/rtty restart

如何使用

使用你的 Web 瀏覽器訪問你的伺服器: https://your-server-host:5912,然後點選連線按鈕。

你可以非常方便的將 rtty 嵌入到你現有的平臺: https://your-server-host:5912?id=your-id

自動登入: https://your-server:5912/?id=device-id&username;=device-username&password;=device-password

上傳檔案和下載檔案

使用快捷鍵開啟選單: Ctrl+Shift+f

 

遠端執行命令

  1. curl -k https://your-server:5912/cmd -d '{"devid":"test","username":"test","password":"123456","cmd":"ls","params":["/"],"env":[]}'

  2. {"Err":0,"msg":"","code":0,"stdout":"bin\ndev\netc\nlib\nmnt\noverlay\nproc\nrom\nroot\nsbin\nsys\ntmp\nusr\nvar\nwww\n","stderr":""}

貢獻程式碼

如果你想幫助 rtty [4]變得更好,請參考 CONTRIBUTING_ZH.md[5]

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖