GoTTY - Del din Linux-terminal (TTY) som en webapplikasjon


GoTTY er et enkelt GoLang-basert kommandolinjeverktøy som lar deg dele terminalen (TTY) som en nettapplikasjon. Det gjør kommandolinjeverktøy til webapplikasjoner.

Den bruker Chrome OS sin terminalemulator (hterm) for å kjøre en JavaScript-basert terminal på nettlesere. Og viktigere er det, GoTTY kjører en web-socket-server som i utgangspunktet overfører utdata fra TTY til klienter og mottar input fra klienter (det vil si hvis input fra klienter er tillatt) og videresender det til TTY.

Les også: Teleconsole – Del Linux-terminalen din med vennene dine

Arkitekturen (hterm + web-socket-ide) ble inspirert av Wetty-programmet som aktiverer terminal over HTTP og HTTPS.

Forutsetninger:

Du bør ha GoLang (Go Programming Language) miljø installert i Linux for å kjøre GoTTY.

Slik installerer du GoTTY i Linux-systemer

Hvis du allerede har et fungerende GoLang-miljø, kjør kommandoen go get nedenfor for å installere den:

go get github.com/yudai/gotty

Kommandoen ovenfor vil installere GoTTY-binæren i GOBIN-miljøvariabelen din, prøv å sjekke om det er tilfelle:

ls $GOPATH/bin/

Slik bruker du GoTTY i Linux

For å kjøre den kan du bruke GOBIN env-variabelen og funksjonen for automatisk fullføring av kommandoer som følger:

$GOBIN/gotty

Ellers, kjør GoTTY eller et annet Go-program uten å skrive inn hele banen til binæren, legg til GOBIN-variabelen din til PATH i ~/.profile-filen ved å bruke eksport-kommandoen nedenfor :

export PATH="$PATH:$GOBIN"

Lagre filen og lukk den. Kilde deretter filen for å utføre endringene ovenfor:

source ~/.profile

Den generelle syntaksen for å kjøre GoTTY-kommandoer er:

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

Kjør nå GoTTY med en hvilken som helst kommando som df-kommandoen for å se plass og bruk av systemdiskpartisjoner fra nettleseren:

gotty df -h

GoTTY vil starte en nettserver på port 8080 som standard. Åpne deretter URLen: http://127.0.0.1:8080/ i nettleseren din, og du vil se kjørekommandoen som om den kjørte på terminalen din:

Hvordan tilpasse GoTTY i Linux

Du kan endre standardalternativer og terminalen din (hterm) i profilfilen ~/.gotty, den vil laste denne filen som standard i tilfelle den eksisterer.

Dette er hovedtilpasningsfilen som leses av gode kommandoer, så lag den som følger:

touch ~/.gotty

Og angi dine egne gyldige verdier for konfigurasjonsalternativene (finn alle konfigurasjonsalternativene her) for å tilpasse GoTTY for eksempel:

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

Du kan angi din egen index.html-fil ved å bruke --index-alternativet fra kommandolinjen:

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

Slik bruker du sikkerhetsfunksjoner i GoTTY

Fordi GoTTY ikke tilbyr pålitelig sikkerhet som standard, må du manuelt bruke visse sikkerhetsfunksjoner forklart nedenfor.

Tillat klienter å kjøre kommandoer/skrive inn i terminal

Merk at GoTTY som standard ikke tillater klienter å skrive inn i TTY-en, den aktiverer bare vindustørrelse.

Du kan imidlertid bruke -w eller --permit-write alternativet for å la klienter skrive til TTY, noe som ikke anbefales på grunn av sikkerhetstrusler mot serveren.

Følgende kommando vil bruke vi kommandolinjeredigering for å åpne filen fossmint.txt for redigering i nettleseren:

gotty -w vi fossmint.txt

Nedenfor er vi-grensesnittet sett fra nettleseren (bruk vi-kommandoer her som vanlig):

Bruk GoTTY med grunnleggende (brukernavn og passord) autentisering

Prøv å aktivere en grunnleggende autentiseringsmekanisme, der klienter må skrive inn det angitte brukernavnet og passordet for å koble til GoTTY-serveren.

Kommandoen nedenfor vil begrense klienttilgang ved å bruke -c-alternativet for å be brukere om spesifisert legitimasjon (brukernavn: test og passord: @67890):

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

Gotty Generate Random URL

En annen måte å begrense tilgangen til serveren på er å bruke -r-alternativet. Her vil GoTTY generere en tilfeldig URL slik at bare brukere som kjenner URLen kan få tilgang til serveren.

Bruk også –tittelformatet «GoTTY – {{ .Command }} ({{ .Vertsnavn }})»-alternativet for å definere nettleserens grensesnitttittel og blikk-kommandoen brukes til å vise systemovervåkingsstatistikk :

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

Følgende er resultatet av kommandoen ovenfor sett fra nettlesergrensesnittet:

Bruk GoTTY med SSL/TLS

Fordi som standard er alle tilkoblinger mellom serveren og klientene ikke kryptert, når du sender hemmelig informasjon gjennom GoTTY som brukerlegitimasjon eller annen informasjon, må du bruke -t eller - -tls alternativ som aktiverer TLS/SSL på økten:

GoTTY vil som standard lese sertifikatfilen ~/.gotty.crt og nøkkelfilen ~/.gotty.key, start derfor med å opprette en selvsignert sertifisering også som nøkkelfil ved å bruke openssl-kommandoen nedenfor (svar på spørsmålet for å generere sertifikatet og nøkkelfilene):

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

Bruk deretter GoTTY på en sikker måte med SSL/TLS aktivert som følger:

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

Del terminalen din med flere klienter

Du kan bruke terminalmultipleksere for å dele en enkelt prosess med flere klienter, følgende kommando vil starte en ny tmux-sesjon kalt gotty with glances-kommandoen (sørg for at du har tmux installert):

gotty tmux new -A -s gotty glances 

For å lese en annen konfigurasjonsfil, bruk –config “/path/to/file”-alternativet slik:

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

For å vise GoTTY-versjonen, kjør kommandoen:

gotty -v 

Besøk GoTTY GitHub-depotet for å finne flere brukseksempler: https://github.com/yudai/gotty

Det er alt! Har du prøvd det? Hvordan finner du GoTTY? Del dine tanker med oss via tilbakemeldingsskjemaet nedenfor.