GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear un terminal basado en web usando xterm.js para ingresar a un sistema en la red local

Después de un poco de investigación aquí está el código de trabajo.

Bibliotecas:

1) https://socket.io/

Esta biblioteca se utiliza para transmitir paquetes del cliente al servidor.

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

Esta biblioteca se utiliza para la vista de terminal.

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

Esta es la biblioteca principal que se utiliza para establecer una conexión con su servidor remoto.

Paso 1:instala Library 3 en tu carpeta de proyecto

Paso 2:comience desde el lado del nodo y cree un server.js archivo para socket abierto

Paso 3:Conexión del socket del cliente al servidor del nodo (ambos están en la máquina local)

La lógica complicada es cómo usar socket y ssh2.

En la emisión del socket, debe activar un comando SSH utilizando la biblioteca ssh2. En la respuesta de la biblioteca ssh2 (desde el servidor), debe transmitir el paquete de socket al cliente. Eso es todo.

Haga clic aquí para encontrar un ejemplo.

Ese ejemplo tendrá estos archivos y carpetas:

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

Primero debe configurar la IP de su servidor, el usuario y la contraseña o el archivo de certificado en server.js y simplemente ejecutar node server.js .

P.D.:No olvides ejecutar npm install

¡Avísame si tienes alguna pregunta!


Después de investigar un poco más tarde, encontré este servicio:https://tmate.io/ que hace el trabajo perfectamente. Aunque si necesita un terminal de tmate basado en la web, debe usar sus servidores ssh como un proxy inverso con el que, idealmente, no me sentía cómodo. Sin embargo, proporcionan tmate-server que se puede usar para alojar su propio servidor proxy inverso pero carece de interfaz de usuario web. Pero para construir un sistema en el que tiene que acceder a un cliente detrás de NAT sobre ssh en la web, a continuación se encuentran los pasos.

  • Instale y configure tmate-server en alguna máquina en la nube.
  • Instale tmate en el lado del cliente y configúrelo para conectarse a una máquina en la nube.
  • Cree una aplicación nodejs usando xterm.js (fácil debido a la comunicación basada en WebSocket) que se conecta a su servidor tmate y pasa comandos al cliente respectivo. (Tenga cuidado con los problemas de seguridad de exponer esta aplicación, ya que estará pasando comandos de Linux).
  • Dependiendo de su caso de uso, es posible que necesite un pequeño envoltorio alrededor del cliente tmate en el lado del cliente para iniciarlo/detenerlo automáticamente o a través de alguna IU/acción manual.

Nota:también escribí un pequeño contenedor en el lado del cliente para iniciar/detener y pasar la información requerida a un servidor API (escrito en nodejs) que luego pasa la información a otra API que conecta el navegador a la respectiva sesión del cliente . Dado que habíamos escrito esta aplicación, incluía autenticación y restricciones de comando de lo que se puede ejecutar en la terminal. Puedes personalizarlo mucho.


Linux
  1. Cómo llegar a un servicio/servidor que está en una red inaccesible (usando túneles SSH)

  2. SSHPass:cómo acceder a un servidor mediante SSH mediante un script sin contraseña (no de forma interactiva)

  3. ¿Cómo enviar Ssh a un servidor usando otro servidor?

  4. ¿Cómo restaurar la base de datos MySQL usando el comando en SSH?

  5. Cómo SCP desde un servidor Linux a un cliente Windows

Cómo crear un usuario SFTP para una raíz de documentos del servidor web

Cómo generar y usar una clave SSH usando PuTTY

Cómo SSH en su servidor Linux desde Windows

Cómo crear un proxy HTTP usando Squid en CentOS 8

Cómo configurar el servidor y el cliente VPN de Linux usando OpenVPN

Cómo crear una VM remota usando el controlador SSH genérico de docker-machine