Gør din terminal til en delbar webside med ttyd

Har du nogensinde befundet dig i en situation, hvor du havde brug for at vise nogen præcis, hvad du laver i din terminal? Måske fejlretter du et serverproblem med en kollega eller demonstrerer en kompleks kommandosekvens for en ven. Sikker på, du kunne tage skærmbilleder eller optage din skærm, men ville det ikke være fantastisk, hvis du bare kunne dele din live terminalsession via et simpelt weblink? Denne tilgang gør samarbejde nemmere og giver real-time synlighed i, hvad der sker på din maskine.

Linux giver dig allerede et par måder at dele terminaler på. For eksempel har du traditionelle metoder som SSH, værktøjer som tmux og skærm og optagelsesværktøjer som asciinema. Selvom disse metoder virker i visse tilfælde, tilføjer de ofte ekstra trin eller afhængigheder, der bremser dig.

Det er herttyd kommandolinjeværktøjkommer ind. I stedet for at tvinge andre til at installere software eller rode med konfigurationer, forvandler ttyd din terminal til en webside. Nu kan alle med linket åbne deres browser og se eller endda interagere med din session.

Hvad kan ttyd gøre?

  • ttyd udnytte Libwebsockets og libuv til lynhurtig ydeevne.
  • Den bruger WebSockets under hætten, som holder oplevelsen jævn og responsiv selv over svagere forbindelser.
  • Understøtter grafisk ZMODEM til filoverførsler og integreres med lrzsz til at trække og slippe filer direkte i browseren.
  • Inkluder SSL/TLS-kryptering for sikkerhed, godkendelsesunderstøttelse.
  • ttyd kan nemt køre på enhver port, du kan lide, og med krydskompileringskompatibilitet kan du endda køre det på en Raspberry Pi.
  • Giv indbygget copy/paste-understøttelse mellem browseren og terminalen.
  • Kan begrænse det maksimale antal samtidige forbindelser.
  • Åbn automatisk sessioner i din browser.
  • Begræns adgangen til en enkelt klient ad gangen.

Installer ttyd på Linux

Hvis du er på Debian eller Ubuntu, er ttyd muligvis ikke tilgængelig i standardlagrene. Men bare rolig, du kan stadig nemt installere det ved hjælp af andre muligheder, såsom at bygge fra kilden.

Først skal du sørge for, at dit system er opdateret:

sudo apt update && sudo apt upgrade -y

Installer de afhængigheder, der kræves til at bygge ttyd:

sudo apt install -y build-essential cmake git libjson-c-dev libwebsockets-dev

Klon ttyd-kildekoden fra GitHub og byg den med disse kommandoer:

git clone https://github.com/tsl0922/ttyd.git
cd ttyd
mkdir build && cd build
cmake ..
make
sudo make install

Og det er det. Du har nu ttyd installeret.

Anbefalet læsning:Fix Steam kunne ikke indlæse webside ukendt fejl 138/130

For andre distributioner kan du bruge den samme manuelle byggemulighed. Alternativt kan du få fat i en prækompileret binær fra ttyd'sGitHub udgivelsessidetil din arkitektur (som amd64 for de fleste). Eller du kan downloade det med denne wget-kommando:

wget https://github.com/tsl0922/ttyd/releases/download/1.7.7/ttyd.x86_64

Gør det eksekverbart:

chmod +x ttyd.x86_64

Det er nok den hurtigste måde at få ttyd til at køre på enhver Linux-distro. Du kan også bruge en universel pakkehåndtering som snap til at installere ttyd:

sudo snap install ttyd --classic

Når du har installeret ttyd ved hjælp af en af ​​disse metoder, skal du skrivettyd --versionfor at bekræfte, at den er installeret korrekt.

Den mest grundlæggende brug af ttyd er at dele din standard shell-session. For at gøre dette skal du blot kørettydefterfulgt af den kommando, du vil dele. I dette tilfælde er det bash (eller zsh, fisk osv.):

ttyd bash

Denne kommando starter som standard en webserver på port 7681. For at bekræfte skal du åbne din browser og besøgehttps://localhost:7681ellerhttps://din-ip-adresse:7681.

Du vil nu se din terminal køre inde på en webside. Derudover kan alle på dit netværk få adgang til denne terminal ved at erstatte localhost med din maskines IP-adresse. Du kan finde din IP medip addr showellerhostname -I, og del det derefter med andre.

Du er heller ikke begrænset til at dele en shell. Ethvert kommandolinjeprogram kan afsløres i browseren. For eksempel løbttyd htopvil starte direkte ind ihtopprocesleder, mensttyd vimellerttyd topvil dele disse værktøjer i stedet.

Hvis du ikke vil bruge standardporten, kan du også angive din egen. Med-pflag:

ttyd -p 8080 bash

Nu er din terminal tilgængelig på port 8080 i stedet for standard 7681.

At køre en åben terminal, der er tilgængelig for alle, er ikke en klog mulighed, så ttyd tilbyder autentificeringsmuligheder med-cflag:

ttyd -c username:password bash

Dette opretter en grundlæggende HTTP-godkendelsesprompt. Enhver, der forsøger at få adgang til din terminal, skal indtaste de angivne legitimationsoplysninger. Til produktionsmiljøer vil du have noget mere robust, men til hurtige demonstrationer eller pålidelige netværk fungerer dette perfekt.

Du kan også gøre din session skrivebeskyttet, hvilket forhindrer input fra browseren:

ttyd -R bash

Dette er nyttigt til workshops eller præsentationer, hvor du vil bevare kontrollen. På den anden side, brug-Whvis du udtrykkeligt ønsker en skrivbar, interaktiv session.

ttyd -W bash

Deling over offentligt netværk

Når du deler over internettet, bliver kryptering afgørende. ttyd lader dig aktivere HTTPS ved hjælp af dit eget SSL-certifikat. Hvis du ikke allerede har certifikater, kan du oprette selvsignerede certifikater til test med OpenSSL, selvom det til produktion er bedst at bruge en betroet udbyder som Let's Encrypt.

Som standard er ttyd kun tilgængelig på dit lokale netværk, men nogle gange vil du gerne dele det med nogen uden for dit lokale netværk. Du kan opnå dette sikkert på nogle få måder. Den enkleste fremgangsmåde er at parre ttyd med en tunneltjeneste såsom tailscale ellerCloudflare Tunnel, som sikkert eksponerer din lokale port til internettet via en midlertidig offentlig URL. Alternativt kan du køre ttyd på en VPS- eller cloudserver med et domænenavn, hvilket gør din terminal permanent tilgængelig via HTTPS.

For mere avancerede opsætninger kan du kun binde ttyd til localhost og placere den bag en omvendt proxy som nginx eller Caddy, som kan håndtere SSL-afslutning, godkendelse og finmasket adgangskontrol.

Afsluttende tanker

ttyd tager den komplicerede opgave med terminaldeling og gør det så enkelt som at dele et hyperlink. Desuden, hvis du vil lære, hvordan du deler din Tmux-session i Linux, så tjek denne vejledning.

Related Posts