Zoeken op website

Hoe u toegang krijgt tot de Linux Server Terminal in een webbrowser met behulp van de 'Wetty (Web + tty)'-tool


Als systeembeheerder maakt u waarschijnlijk verbinding met externe servers met behulp van een programma zoals GNOME Terminal (of iets dergelijks) als u een Linux-desktop gebruikt, of een SSH-client zoals Putty als u een Windows-machine, terwijl u andere taken uitvoert, zoals surfen op internet of uw e-mail controleren.

Zou het niet fantastisch zijn als er een manier was om rechtstreeks vanuit de webbrowser toegang te krijgen tot een externe Linux-server? Gelukkig voor ons allemaal is er een tool genaamd Wetty (Web + tty) waarmee we precies dat kunnen doen – zonder dat we hoeven over te schakelen programma's en allemaal vanuit hetzelfde webbrowservenster.

Wetty installeren onder Linux

Wetty is beschikbaar via de GitHub repository van de ontwikkelaar. Om die reden gebruikt u, ongeacht de distributie, een aantal afhankelijkheden die eerst handmatig moeten worden geïnstalleerd voordat u de repository lokaal kloont en het programma installeert.

In op RHEL gebaseerde distributies, zoals CentOS, Rocky Linux en AlmaLinux, moet je NodeJS installeren en de EPEL-repository zoals weergegeven:


yum groupinstall 'Development Tools'
curl -fsSL https://rpm.nodesource.com/setup_17.x | bash -
yum update 
yum install epel-release git nodejs npm

In Debian en zijn afgeleiden is de versie van NodeJS die beschikbaar is in de opslagplaatsen van de distributie ouder dan de minimumversie die vereist is om Wetty te installeren, dus u moet deze installeren vanaf de >NodeJS GitHub-ontwikkelaarsrepository:


apt install curl build-essential
curl -fsSL https://deb.nodesource.com/setup_17.x | sudo -E bash -
apt update && apt install -y git nodejs npm

Na het installeren van deze afhankelijkheden kloon je de GitHub-repository:

git clone https://github.com/krishnasrinivas/wetty

Wijzig de werkmap in wetty, zoals aangegeven in het bericht hierboven:

cd wetty

installeer vervolgens Wetty door het volgende uit te voeren:

npm install

Als u tijdens het installatieproces foutmeldingen krijgt, verhelp deze dan voordat u verder gaat. In mijn geval was de behoefte aan een nieuwere versie van NodeJS in Debian een probleem dat moest worden opgelost voordat npm succesvol kon worden geïnstalleerd.

Wetty starten en toegang krijgen tot Linux Terminal vanuit de webbrowser

Op dit punt kunt u de webinterface in de lokale poort 8080 voor Wetty starten door deze uit te voeren (hierbij wordt ervan uitgegaan dat uw huidige werkmap /wetty is) :

node app.js -p 8080

Zoals je kunt zien in de onderstaande afbeelding:

Maar doe jezelf een plezier en VOER NIET je gebruikersnaam en wachtwoord in, aangezien deze verbinding niet veilig is en je niet wilt dat je inloggegevens onbeschermd door de draad gaan.

Om die reden moet je Wetty altijd via HTTPS uitvoeren. Laten we een zelfondertekend certificaat maken om onze verbinding met de externe server te beveiligen:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

En gebruik het vervolgens om Wetty te starten via HTTPS.

Houd er rekening mee dat u de aangepaste HTTPS-poort moet openen waarop u Wetty wilt uitvoeren:

firewall-cmd --add-service=https # Run Wetty in the standard HTTPS port (443)
firewall-cmd --permanent --add-service=https
firewall-cmd --add-port=XXXX/tcp # Run Wetty on TCP port XXXX
nohup node app.js --sslkey key.pem --sslcert cert.pem -p 8080 &

Het laatste commando in de bovenstaande reeks start Wetty op de achtergrond en luistert op poort 8080. Omdat we een zelfondertekend certificaat gebruiken, is het te verwachten dat de browser een beveiligingswaarschuwing zal tonen – het is volkomen veilig om deze te negeren en een beveiligingsuitzondering toe te voegen – hetzij permanent, hetzij voor de huidige sessie:

Nadat je de beveiligingsuitzondering hebt bevestigd, kun je met Wetty inloggen op je VPS. Het spreekt voor zich dat u alle opdrachten en programma's kunt uitvoeren alsof u voor een echte of virtuele terminal zit, zoals u kunt zien in de volgende schermcast: