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.