Après quelques recherches, voici le code qui fonctionne.
Bibliothèques :
1) https://socket.io/
Cette bibliothèque est utilisée pour transmettre le package du client au serveur.
2) https://github.com/staltz/xstream
Cette bibliothèque est utilisée pour la vue du terminal.
3) https://github.com/mscdex/ssh2
Il s'agit de la bibliothèque principale utilisée pour établir une connexion avec votre serveur distant.
Étape 1 :Installez la bibliothèque 3 dans votre dossier de projet
Étape 2 :Commencez par le nœud, créez un server.js
fichier pour socket ouvert
Étape 3 :Connexion du socket client au serveur de nœud (les deux se trouvent sur la machine locale)
La logique délicate est de savoir comment utiliser socket et ssh2.
A l'émission du socket, vous devez déclencher une commande SSH à l'aide de la bibliothèque ssh2. À la réponse de la bibliothèque ssh2 (du serveur), vous devez transmettre le package de socket au client. C'est tout.
Cliquez ici pour trouver un exemple.
Cet exemple contiendra ces fichiers et dossiers :
Type Name
------------
FILE server.js
FILE package.json
FOLDER src
FOLDER xtream
Vous devez d'abord configurer l'adresse IP de votre serveur, l'utilisateur et le mot de passe ou le fichier cert sur server.js et exécuter simplement node server.js
.
P.S. :N'oubliez pas d'exécuter npm install
N'hésitez pas à me contacter si vous avez des questions !
Après quelques recherches plus tard je suis tombé sur ce service :https://tmate.io/ qui fait parfaitement le job. Cependant, si vous avez besoin d'un terminal Web de tmate, vous devez utiliser leurs serveurs ssh comme proxy inverse, ce avec quoi je n'étais idéalement pas à l'aise. Cependant, ils fournissent tmate-server qui peut être utilisé pour héberger votre propre serveur proxy inverse mais manque d'interface utilisateur Web. Mais pour construire un système où vous devez accéder à un client derrière NAT sur ssh sur le Web, voici les étapes ci-dessous.
- Installez et configurez tmate-server sur une machine cloud.
- Installez tmate côté client et configurez-le pour vous connecter à une machine cloud.
- Créez une application nodejs à l'aide de xterm.js (facile grâce à la communication basée sur WebSocket) qui se connecte à votre serveur tmate et transmet les commandes au client respectif. (Méfiez-vous des problèmes de sécurité liés à l'exposition de cette application, car vous passerez des commandes Linux).
- Selon votre cas d'utilisation, vous aurez peut-être besoin d'un petit wrapper autour du client tmate côté client pour le démarrer/l'arrêter automatiquement ou via une interface utilisateur/action manuelle.
Remarque :j'ai également écrit un petit wrapper côté client pour démarrer/arrêter et transmettre les informations requises à un serveur API (écrit en nodejs) qui transmet ensuite les informations à une autre API qui connecte le navigateur à la session client respective. . Puisque nous avions écrit cette application, elle incluait l'authentification ainsi que les restrictions de commande de ce qui peut être exécuté sur le terminal. Vous pouvez le personnaliser beaucoup.