GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie ein webbasiertes Terminal mit xterm.js, um per SSH in ein System im lokalen Netzwerk zu gelangen

Nach ein wenig Recherche ist hier ein funktionierender Code.

Bibliotheken:

1) https://socket.io/

Diese Bibliothek wird zum Übertragen von Paketen vom Client zum Server verwendet.

2) https://github.com/staltz/xstream

Diese Bibliothek wird für die Terminalansicht verwendet.

3) https://github.com/mscdex/ssh2

Dies ist die Hauptbibliothek, die zum Herstellen einer Verbindung mit Ihrem Remote-Server verwendet wird.

Schritt 1:Installieren Sie Library 3 in Ihrem Projektordner

Schritt 2:Beginnen Sie auf der Knotenseite und erstellen Sie einen server.js Datei für offenen Socket

Schritt 3:Client-Socket mit Node-Server verbinden (beide befinden sich auf dem lokalen Rechner)

Die knifflige Logik ist die Verwendung von Socket und ssh2.

Beim Senden des Sockets müssen Sie einen SSH-Befehl mit der ssh2-Bibliothek auslösen. Auf Antwort der ssh2-Bibliothek (vom Server) müssen Sie das Socket-Paket an den Client übertragen. Das ist es.

Klicken Sie hier, um ein Beispiel zu finden.

Dieses Beispiel enthält diese Dateien und Ordner:

Type    Name
------------
FILE    server.js
FILE    package.json
FOLDER  src
FOLDER  xtream

Zuerst müssen Sie Ihre Server-IP, Ihren Benutzer und Ihr Passwort oder Ihre Zertifikatsdatei auf server.js konfigurieren und einfach node server.js ausführen .

P.S.:Vergessen Sie nicht, npm install auszuführen

Lassen Sie mich wissen, wenn Sie Fragen haben!


Nach einigen Recherchen bin ich später auf diesen Dienst gestoßen:https://tmate.io/, der die Arbeit perfekt erledigt. Wenn Sie jedoch ein webbasiertes Terminal von tmate benötigen, müssen Sie deren SSH-Server als Reverse-Proxy verwenden, mit dem ich mich im Idealfall nicht wohl fühlte. Sie bieten jedoch einen Tmate-Server, der zum Hosten Ihres eigenen Reverse-Proxy-Servers verwendet werden kann, aber keine Web-Benutzeroberfläche hat. Aber um ein System aufzubauen, bei dem Sie auf einen Client hinter NAT über ssh im Web zugreifen müssen, sind die folgenden Schritte aufgeführt.

  • Installieren und konfigurieren Sie tmate-server auf einem Cloud-Rechner.
  • Installieren Sie tmate auf der Client-Seite und konfigurieren Sie es so, dass es sich mit einem Cloud-Rechner verbindet.
  • Erstellen Sie eine nodejs-Anwendung mit xterm.js (einfach wegen der WebSocket-basierten Kommunikation), die sich mit Ihrem tmate-Server verbindet und Befehle an den jeweiligen Client weiterleitet. (Achten Sie auf Sicherheitsprobleme beim Offenlegen dieser Anwendung, da Sie Linux-Befehle weitergeben werden ).
  • Abhängig von Ihrem Anwendungsfall benötigen Sie möglicherweise einen kleinen Wrapper um den Tmate-Client auf der Client-Seite, um ihn automatisch oder über eine UI-/manuelle Aktion zu starten/stoppen.

Hinweis:Ich habe auch clientseitig einen kleinen Wrapper geschrieben, um die erforderlichen Informationen zu starten/stoppen und an einen API-Server (in nodejs geschrieben) weiterzugeben, der die Informationen dann an eine andere API weitergibt, die den Browser mit der jeweiligen Clientsitzung verbindet . Da wir diese Anwendung geschrieben hatten, beinhaltete sie die Authentifizierung sowie Befehlseinschränkungen dessen, was auf dem Terminal ausgeführt werden kann. Sie können es sehr individuell anpassen.


Linux
  1. SSHPass:SSH-Zugang zu einem Server mit einem Skript ohne Passwort (nicht interaktiv)

  2. [Linux] :Shellinabox – Ein webbasierter Zugang zu Ihrem SSH-Terminal

  3. Wie setze ich das Plesk Admin-Passwort mit SSH in Linux Server zurück?

  4. Wie kann ich die MySQL-Datenbank mit dem Befehl in SSH wiederherstellen?

  5. So führen Sie SCP vom Linux-Server zum Windows-Client aus

So erstellen Sie einen SFTP-Benutzer für einen Webserver Document Root

Generieren und Verwenden eines SSH-Schlüssels mit PuTTY

Wie Sie von Windows aus SSH in Ihren Linux-Server einbinden

So erstellen Sie einen HTTP-Proxy mit Squid unter CentOS 8

So richten Sie einen Linux-VPN-Server und -Client mit OpenVPN ein

So erstellen Sie eine Remote-VM mit dem generischen Docker-Machine-SSH-Treiber