Zoeken op website

GoTTY - Deel uw Linux Terminal (TTY) als webapplicatie


GoTTY is een eenvoudig op GoLang gebaseerd opdrachtregelprogramma waarmee u uw terminal (TTY) kunt delen als een webtoepassing. Het verandert opdrachtregelhulpmiddelen in webapplicaties.

Het maakt gebruik van de terminalemulator van Chrome OS (hterm) om een op JavaScript gebaseerde terminal in een webbrowser uit te voeren. En belangrijker nog: GoTTY draait een websocket-server die in feite de uitvoer van de TTY naar clients overdraagt en input van clients ontvangt (dat wil zeggen als input van clients is toegestaan) en deze doorstuurt naar de TTY.

Lees ook: Teleconsole – Deel uw Linux-terminal met uw vrienden

De architectuur (hterm + websocket-idee) is geïnspireerd op het Wetty-programma dat terminal via HTTP en HTTPS mogelijk maakt.

Vereisten:

Om GoTTY te kunnen uitvoeren, moet de GoLang-omgeving (Go Programming Language) in Linux zijn geïnstalleerd.

Hoe GoTTY op Linux-systemen te installeren

Als je al een werkende GoLang-omgeving hebt, voer dan de onderstaande opdracht go get uit om deze te installeren:

go get github.com/yudai/gotty

Het bovenstaande commando installeert het GoTTY binaire bestand in uw GOBIN omgevingsvariabele. Probeer te controleren of dat het geval is:

ls $GOPATH/bin/

Hoe GoTTY te gebruiken onder Linux

Om het uit te voeren, kunt u als volgt de variabele GOBIN env en de functie voor automatisch aanvullen van opdrachten gebruiken:

$GOBIN/gotty

Voer anders GoTTY of een ander Go-programma uit zonder het volledige pad naar het binaire bestand te typen, voeg uw GOBIN-variabele toe aan PATH in het ~/.profile-bestand met behulp van de onderstaande export-opdracht :

export PATH="$PATH:$GOBIN"

Sla het bestand op en sluit het. Bron het bestand vervolgens om de bovenstaande wijzigingen door te voeren:

source ~/.profile

De algemene syntaxis voor het uitvoeren van GoTTY-opdrachten is:

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

Voer nu GoTTY uit met een willekeurige opdracht, zoals de opdracht df, om de ruimte en het gebruik van systeemschijfpartities vanuit de webbrowser te bekijken:

gotty df -h

GoTTY start standaard een webserver op poort 8080. Open vervolgens de URL: http://127.0.0.1:8080/ in uw webbrowser en u zult de lopende opdracht zien alsof deze op uw terminal wordt uitgevoerd:

Hoe GoTTY aan te passen in Linux

Je kunt de standaardopties en je terminal (hterm) in het profielbestand ~/.gotty wijzigen. Dit bestand wordt standaard geladen als het bestaat.

Dit is het belangrijkste aanpassingsbestand dat wordt gelezen door gotty-opdrachten, dus maak het als volgt:

touch ~/.gotty

En stel uw eigen geldige waarden in voor de configuratie-opties (vind hier alle configuratie-opties) om bijvoorbeeld GoTTY aan te passen:

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

U kunt uw eigen index.html-bestand instellen met de optie --index vanaf de opdrachtregel:

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

Beveiligingsfuncties gebruiken in GoTTY

Omdat GoTTY standaard geen betrouwbare beveiliging biedt, moet je bepaalde beveiligingsfuncties handmatig gebruiken, die hieronder worden uitgelegd.

Geef clients toestemming om opdrachten uit te voeren/invoer in de terminal te typen

Houd er rekening mee dat GoTTY standaard niet toestaat dat clients invoer in de TTY typen; het maakt alleen het wijzigen van de grootte van vensters mogelijk.

U kunt echter de optie -w of --permit-write gebruiken om clients toe te staan naar de TTY te schrijven, wat niet wordt aanbevolen vanwege beveiligingsrisico's voor de server.

De volgende opdracht gebruikt de vi-opdrachtregeleditor om het bestand fossmint.txt te openen voor bewerking in de webbrowser:

gotty -w vi fossmint.txt

Hieronder ziet u de vi-interface zoals gezien vanuit de webbrowser (gebruik hier zoals gewoonlijk vi-opdrachten):

Gebruik GoTTY met basisauthenticatie (gebruikersnaam en wachtwoord).

Probeer een basisauthenticatiemechanisme te activeren, waarbij clients de opgegeven gebruikersnaam en wachtwoord moeten invoeren om verbinding te maken met de GoTTY-server.

Met de onderstaande opdracht wordt de clienttoegang beperkt met behulp van de optie -c om gebruikers om opgegeven inloggegevens te vragen (gebruikersnaam: test en wachtwoord: @67890):

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

Gotty Genereer willekeurige URL

Een andere manier om de toegang tot de server te beperken is door de optie -r te gebruiken. Hier genereert GoTTY een willekeurige URL, zodat alleen gebruikers die de URL kennen toegang kunnen krijgen tot de server.

Gebruik ook de –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” optie om de titel van de webbrowserinterface te definiëren en de opdracht voor blikken wordt gebruikt om systeemmonitoringstatistieken weer te geven :

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

Het volgende is het resultaat van de bovenstaande opdracht, gezien vanuit de webbrowserinterface:

Gebruik GoTTY met SSL/TLS

Omdat standaard alle verbindingen tussen de server en clients niet zijn gecodeerd, moet u, wanneer u geheime informatie via GoTTY verzendt, zoals gebruikersgegevens of andere informatie, de -t of - gebruiken -tls optie die TLS/SSL inschakelt voor de sessie:

GoTTY leest standaard het certificaatbestand ~/.gotty.crt en het sleutelbestand ~/.gotty.key en begint daarom ook met het maken van een zelfondertekende certificering als het sleutelbestand met behulp van de onderstaande opdracht openssl (beantwoord de gestelde vraag om de cert- en sleutelbestanden te genereren):

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

Gebruik GoTTY dan als volgt op een veilige manier met SSL/TLS ingeschakeld:

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

Deel uw terminal met meerdere klanten

U kunt gebruik maken van terminalmultiplexers om een enkel proces met meerdere clients te delen. De volgende opdracht start een nieuwe tmux-sessie met de naam gotty met de opdracht blikken (zorg ervoor dat u tmux hebt geïnstalleerd):

gotty tmux new -A -s gotty glances 

Om een ander configuratiebestand te lezen, gebruikt u de –config “/path/to/file” optie als volgt:

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

Om de GoTTY-versie weer te geven, voert u de opdracht uit:

gotty -v 

Bezoek de GoTTY GitHub-repository voor meer gebruiksvoorbeelden: https://github.com/yudai/gotty

Dat is alles! Heb je het uitgeprobeerd? Hoe vind je GoTTY? Deel uw mening met ons via het onderstaande feedbackformulier.