GoTTY - Podijelite svoj Linux terminal (TTY) kao web aplikaciju


GoTTY jednostavan je alat naredbenog retka temeljen na GoLangu koji vam omogućuje dijeljenje vašeg terminala (TTY) kao web aplikacije. Pretvara alate naredbenog retka u web aplikacije.

Koristi emulator terminala OS-a Chrome (hterm) za izvršavanje terminala temeljenog na JavaScriptu na web-preglednicima. I što je još važnije, GoTTY pokreće web socket poslužitelj koji u osnovi prenosi izlaz s TTY klijentima i prima ulaz od klijenata (odnosno ako je unos od klijenata dopušten) i prosljeđuje ga na TTY.

Pročitajte također: Telekonzola – podijelite svoj Linux terminal sa svojim prijateljima

Njegova arhitektura (hterm + ideja web socket) inspirirana je Wetty programom koji omogućuje terminal preko HTTP i HTTPS.

Preduvjeti:

Trebali biste imati okruženje GoLang (Go Programming Language) instalirano u Linuxu da biste pokrenuli GoTTY.

Kako instalirati GoTTY u Linux sustave

Ako već imate GoLang okruženje koje radi, pokrenite donju naredbu go get da biste ga instalirali:

go get github.com/yudai/gotty

Gornja naredba instalirat će GoTTY binarnu datoteku u vašu GOBIN varijablu okruženja, pokušajte provjeriti je li to slučaj:

ls $GOPATH/bin/

Kako koristiti GoTTY u Linuxu

Da biste ga pokrenuli, možete koristiti varijablu GOBIN env i značajku automatskog dovršavanja naredbi na sljedeći način:

$GOBIN/gotty

Inače, pokrenite GoTTY ili bilo koji drugi Go program bez upisivanja pune staze do binarne datoteke, dodajte svoju GOBIN varijablu u PATH u datoteci ~/.profile koristeći naredbu export ispod :

export PATH="$PATH:$GOBIN"

Spremite datoteku i zatvorite je. Zatim izvor datoteke kako biste izvršili gore navedene promjene:

source ~/.profile

Opća sintaksa za pokretanje GoTTY naredbi je:

Usage: gotty [options] <Linux command here> [<arguments...>]

Sada pokrenite GoTTY s bilo kojom naredbom kao što je naredba df da biste vidjeli prostor na particijama diska sustava i korištenje iz web preglednika:

gotty df -h

GoTTY će prema zadanim postavkama pokrenuti web poslužitelj na portu 8080. Zatim otvorite URL: http://127.0.0.1:8080/ na svom web pregledniku i vidjet ćete pokrenutu naredbu kao da se izvodi na vašem terminalu:

Kako prilagoditi GoTTY u Linuxu

Možete promijeniti zadane opcije i svoj terminal (hterm) u datoteci profila ~/.gotty, on će učitati ovu datoteku prema zadanim postavkama u slučaju da postoji.

Ovo je glavna datoteka za prilagodbu koju čitaju gotty naredbe, pa je izradite na sljedeći način:

touch ~/.gotty

I postavite vlastite valjane vrijednosti za konfiguracijske opcije (ovdje pronađite sve konfiguracijske opcije) da prilagodite GoTTY na primjer:

// Listen at port 9000 by default
port = "9000"

// Enable TSL/SSL by default
enable_tls = true

// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
    font_size = 5,
    background_color = "rgb(16, 16, 32)"
}

Možete postaviti vlastitu datoteku index.html pomoću opcije --index iz naredbenog retka:

gotty --index /path/to/index.html uptime

Kako koristiti sigurnosne značajke u GoTTY

Budući da GoTTY ne nudi pouzdanu sigurnost prema zadanim postavkama, morate ručno koristiti određene sigurnosne značajke objašnjene u nastavku.

Dopustite klijentima da izvode naredbe/upisuju unos u terminalu

Imajte na umu da prema zadanim postavkama GoTTY ne dopušta klijentima da upisuju unos u TTY, već samo omogućuje promjenu veličine prozora.

Međutim, možete koristiti opciju -w ili --permit-write kako biste klijentima omogućili pisanje na TTY, što se ne preporučuje zbog sigurnosnih prijetnji poslužitelju.

Sljedeća naredba će koristiti uređivač naredbenog retka vi za otvaranje datoteke fossmint.txt za uređivanje u web pregledniku:

gotty -w vi fossmint.txt

Ispod je vi sučelje kako se vidi iz web preglednika (ovdje koristite vi naredbe kao i obično):

Koristite GoTTY s osnovnom (korisničko ime i lozinka) provjerom autentičnosti

Pokušajte aktivirati osnovni mehanizam provjere autentičnosti, gdje će klijenti morati unijeti navedeno korisničko ime i lozinku za povezivanje s GoTTY poslužiteljem.

Naredba u nastavku će ograničiti pristup klijenta korištenjem opcije -c za traženje od korisnika navedenih vjerodajnica (korisničko ime: test i lozinka: @67890):

gotty -w -p "9000" -c "test:@67890" glances

Moram generirati nasumični URL

Drugi način ograničavanja pristupa poslužitelju je korištenje opcije -r. Ovdje će GoTTY generirati nasumični URL tako da samo korisnici koji znaju URL mogu dobiti pristup poslužitelju.

Također upotrijebite opciju –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” za definiranje naslova sučelja web preglednika, a naredba glances se koristi za prikaz statistike nadzora sustava :

gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Sljedeće je rezultat gornje naredbe kako se vidi iz sučelja web preglednika:

Koristite GoTTY sa SSL/TLS

Budući da prema zadanim postavkama sve veze između poslužitelja i klijenata nisu šifrirane, kada šaljete tajne informacije putem GoTTY-a kao što su korisničke vjerodajnice ili bilo koje druge informacije, morate koristiti -t ili - -tls opcija koja omogućuje TLS/SSL na sesiji:

GoTTY će prema zadanim postavkama čitati datoteku certifikata ~/.gotty.crt i ključnu datoteku ~/.gotty.key, stoga počnite tako što ćete izraditi i samopotpisani certifikat kao datoteku ključa koristeći donju naredbu openssl (odgovorite na postavljeno pitanje kako biste generirali datoteke certifikata i ključa):

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

Zatim koristite GoTTY na siguran način s omogućenim SSL/TLS-om na sljedeći način:

gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Podijelite svoj terminal s više klijenata

Možete koristiti terminalske multipleksere za dijeljenje jednog procesa s više klijenata, sljedeća naredba pokrenut će novu tmux sesiju pod nazivom gotty with glances naredba (provjerite imate li instaliran tmux):

gotty tmux new -A -s gotty glances 

Za čitanje druge konfiguracijske datoteke upotrijebite opciju –config “/path/to/file” ovako:

gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Za prikaz GoTTY verzije pokrenite naredbu:

gotty -v 

Posjetite repozitorij GoTTY GitHub kako biste pronašli više primjera upotrebe: https://github.com/yudai/gotty

To je sve! Jeste li ga isprobali? Kako pronaći GoTTY? Podijelite svoje mišljenje s nama putem donjeg obrasca za povratne informacije.