Vyhledávání na webu

GoTTY – Sdílejte svůj linuxový terminál (TTY) jako webovou aplikaci


GoTTY je jednoduchý nástroj příkazového řádku založený na GoLang, který vám umožňuje sdílet váš terminál (TTY) jako webovou aplikaci. Proměňuje nástroje příkazového řádku na webové aplikace.

Využívá emulátor terminálu systému Chrome OS (hterm) ke spuštění terminálu založeného na JavaScriptu ve webových prohlížečích. A co je důležité, GoTTY provozuje webový soketový server, který v podstatě přenáší výstup z TTY ke klientům a přijímá vstup od klientů (tj. pokud je vstup od klientů povolen) a přeposílá ho dál na TTY.

Přečtěte si také: Telekonzole – sdílejte svůj linuxový terminál se svými přáteli

Jeho architektura (hterm + web socket idea) byla inspirována programem Wetty, který umožňuje terminál přes HTTP a HTTPS.

Předpoklady:

Pro spuštění GoTTY byste měli mít v Linuxu nainstalované prostředí GoLang (Go Programming Language).

Jak nainstalovat GoTTY v systémech Linux

Pokud již máte funkční prostředí GoLang, spusťte níže uvedený příkaz go get a nainstalujte jej:

go get github.com/yudai/gotty

Výše uvedený příkaz nainstaluje binární soubor GoTTY do vaší proměnné prostředí GOBIN, zkuste zkontrolovat, zda tomu tak je:

ls $GOPATH/bin/

Jak používat GoTTY v Linuxu

Chcete-li jej spustit, můžete použít proměnnou GOBIN env a funkci automatického dokončování příkazů následovně:

$GOBIN/gotty

V opačném případě spusťte GoTTY nebo jakýkoli jiný program Go, aniž byste zadali úplnou cestu k binárnímu souboru, přidejte svou proměnnou GOBIN do PATH v souboru ~/.profile pomocí příkazu export níže :

export PATH="$PATH:$GOBIN"

Uložte soubor a zavřete jej. Poté zdrojovým souborem provedete změny výše:

source ~/.profile

Obecná syntaxe pro spouštění příkazů GoTTY je:

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

Nyní spusťte GoTTY pomocí libovolného příkazu, jako je příkaz df, abyste zobrazili místo a využití systémových diskových oddílů z webového prohlížeče:

gotty df -h

GoTTY ve výchozím nastavení spustí webový server na portu 8080. Poté otevřete URL: http://127.0.0.1:8080/ ve svém webovém prohlížeči a uvidíte spuštěný příkaz, jako by byl spuštěn na vašem terminálu:

Jak přizpůsobit GoTTY v Linuxu

Výchozí možnosti a váš terminál (hterm) můžete změnit v souboru profilu ~/.gotty, pokud tento soubor existuje, standardně se načte.

Toto je hlavní soubor přizpůsobení čtený příkazy gotty, takže jej vytvořte následovně:

touch ~/.gotty

A nastavte své vlastní platné hodnoty pro možnosti konfigurace (všechny možnosti konfigurace najdete zde), abyste přizpůsobili GoTTY například:

// 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)"
}

Svůj vlastní soubor index.html můžete nastavit pomocí možnosti --index z příkazového řádku:

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

Jak používat bezpečnostní funkce v GoTTY

Vzhledem k tomu, že GoTTY ve výchozím nastavení nenabízí spolehlivé zabezpečení, musíte některé bezpečnostní funkce popsané níže použít ručně.

Povolit klientům spouštět příkazy/zadávání typů v terminálu

Všimněte si, že ve výchozím nastavení GoTTY neumožňuje klientům zadávat vstup do TTY, umožňuje pouze změnu velikosti okna.

Můžete však použít volbu -w nebo --permit-write a umožnit klientům zapisovat do TTY, což se nedoporučuje kvůli bezpečnostním hrozbám pro server.

Následující příkaz použije editor příkazového řádku vi k otevření souboru fossmint.txt pro úpravy ve webovém prohlížeči:

gotty -w vi fossmint.txt

Níže je rozhraní vi, jak je vidět z webového prohlížeče (zde použijte příkazy vi jako obvykle):

Použijte GoTTY se základním ověřením (uživatelské jméno a heslo).

Zkuste aktivovat základní autentizační mechanismus, kdy klienti budou muset zadat zadané uživatelské jméno a heslo pro připojení k serveru GoTTY.

Níže uvedený příkaz omezí klientský přístup pomocí možnosti -c a požádá uživatele o zadané přihlašovací údaje (uživatelské jméno: test a heslo: @67890):

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

Gotty Generate Random URL

Dalším způsobem omezení přístupu k serveru je použití volby -r. Zde GoTTY vygeneruje náhodnou adresu URL, takže k serveru mohou získat přístup pouze uživatelé, kteří adresu URL znají.

Použijte také možnost –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” k definování názvu rozhraní webového prohlížeče a příkaz pohledy se používá k zobrazení statistik monitorování systému :

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

Následující je výsledkem příkazu výše, jak je vidět z rozhraní webového prohlížeče:

Použijte GoTTY s SSL/TLS

Protože ve výchozím nastavení nejsou všechna spojení mezi serverem a klienty šifrována, při odesílání tajných informací přes GoTTY, jako jsou přihlašovací údaje uživatele nebo jakékoli jiné informace, musíte použít -t nebo - -tls volba, která povolí TLS/SSL v relaci:

GoTTY bude ve výchozím nastavení číst soubor certifikátu ~/.gotty.crt a soubor klíče ~/.gotty.key, začněte proto také vytvořením certifikátu s vlastním podpisem jako soubor klíče pomocí příkazu openssl níže (odpovězte na otázku za účelem vygenerování souborů certifikátu a klíče):

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

Poté použijte GoTTY bezpečným způsobem s povoleným SSL/TLS následovně:

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

Sdílejte svůj terminál s více klienty

Pro sdílení jednoho procesu s více klienty můžete využít terminálové multiplexery, následující příkaz spustí novou relaci tmux s názvem gotty s příkazem pohledy (ujistěte se, že máte nainstalovaný tmux):

gotty tmux new -A -s gotty glances 

Chcete-li přečíst jiný konfigurační soubor, použijte volbu –config „/cesta/k/souboru“ takto:

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

Chcete-li zobrazit verzi GoTTY, spusťte příkaz:

gotty -v 

Navštivte repozitář GoTTY GitHub, kde najdete další příklady použití: https://github.com/yudai/gotty

To je vše! Zkoušeli jste to? Jak najdete GoTTY? Podělte se s námi o své myšlenky prostřednictvím formuláře pro zpětnou vazbu níže.