GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer un terminal Web à l'aide de xterm.js pour ssh dans un système sur un réseau local

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.


Linux
  1. Comment accéder à un service/serveur qui se trouve sur un réseau inaccessible (en utilisant des tunnels SSH)

  2. [Linux] :Shellinabox – Un accès web à votre Terminal SSH

  3. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  4. Comment restaurer la base de données MySQL à l'aide de la commande en SSH ?

  5. Comment télécharger un fichier depuis un serveur en utilisant SSH ?

Comment créer un utilisateur SFTP pour une racine de document de serveur Web

Comment générer et utiliser une clé SSH avec PuTTY

Comment se connecter en SSH à votre serveur Linux à partir de Windows

Comment créer un proxy HTTP à l'aide de Squid sur CentOS 8

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN

Comment créer une machine virtuelle distante à l'aide du pilote SSH générique docker-machine