- Notifications
You must be signed in to change notification settings - Fork513
🐛 Access your terminal from anywhere via the web.
License
zhaojh329/rtty
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
rtty(中文)
This project is officially supported byGL.iNet.
flowchart TBs[rttys with public IP address]u1["User(Web Browser)"] --> su2["User(Web Browser)"] --> su3["User(Web Browser)"] --> ss --> c1["rtty(Linux Device)"]s --> c2["rtty(Linux Device)"]s --> c3["rtty(Linux Device)"]
It is composed of a client and aserver. The client is written in pure C. Theserver is written in go languageand the front-end is written inVue.
You can access your device's terminal from anywhere via the web. Distinguish your different device by device ID.
rtty is very suitable for remote maintenance your or your company's thousands of Linux devices deployed aroundthe world.
- The client is writen in C language, very small, suitable for embedded Linux
- No SSL: rtty(32K) + libev(56K)
- Support SSL: + libmbedtls(88K) + libmbedcrypto(241K) + libmbedx509(48k)
- Execute command remotely in a batch of devices
- SSL support: openssl, mbedtls, CyaSSl(wolfssl)
- mTLS
- Very convenient to upload and download files
- Access different devices based on device ID
- Support HTTP Proxy - Access your device's Web
- Fully-featured terminal based onXterm.js
- Simple to deployment and easy to use
- libev - A full-featured and high-performance event loop
- mbedtls(polarssl) orCyaSSl(wolfssl) oropenssl - If you want to support SSL
Install Dependencies
sudo apt install -y libev-dev libssl-dev # Ubuntu, Debiansudo pacman -S --noconfirm libev openssl # ArchLinuxsudo yum install -y libev-devel openssl-devel # Centos
Clone the code of rtty
git clone --recursive https://github.com/zhaojh329/rtty.git
Build
cd rtty && mkdir build && cd buildcmake .. && make install
Select rtty in menuconfig and compile it
Target packages ---> Shell and utilities ---> [*] rtty
Usage: rtty [option] -I, --id=string Set an ID for the device(Maximum 63 bytes, valid character:letter, number, underline and short line) -h, --host=string Server's host or ipaddr(Default is localhost) -p, --port=number Server port(Default is 5912) -d, --description=string Add a description to the device(Maximum 126 bytes) -a Auto reconnect to the server -s SSL on -C, --cacert CA certificate to verify peer against -x, --insecure Allow insecure server connections when using SSL -c, --cert Certificate file to use" -k, --key Private key file to use" -D Run in the background -t, --token=string Authorization token -f username Skip a second login authentication. See man login(1) about the details -R Receive file -S file Send file -v, --verbose verbose -V, --version Show version --help Show usage
Replace the following parameters with your own parameters
sudo rtty -I 'My-device-ID' -h 'your-server' -p 5912 -a -v -d 'My Device Description'
If yourrttys is configured with mTLS enabled (device key and certificate required),add the following parameters(Replace the following with valid paths to your own)
-k /etc/ssl/private/abc.pem -c /etc/ssl/certs/abc.pem
You can generate them e.g. via openssl toolopenssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp521r1 -keyout /tmp/key.pem -out /tmp/cert.pem -days 18262 -nodes -subj "/C=CZ/O=Acme Inc./OU=ACME/CN=ACME-DEV-123"
If your rttys is configured with a token, add the following parameter(Replace the following token with your own)
-t 34762d07637276694b938d23f10d7164
Use your web browser to access your server:http://your-server-host:5913
, then click the connection button
connect devices with no web login required(you need to configure the device white list on the server)
http://your-server-host:5913/connect/devid1
http://your-server-host:5913/connect/devid2
Transfer file from local to remote device
rtty -R
Transfer file from remote device to the local
rtty -S test.txt
If you would like to help makingrtty better,see theCONTRIBUTING.md file.
About
🐛 Access your terminal from anywhere via the web.