Cómo acceder a la terminal del servidor Linux en el navegador web utilizando la herramienta Wetty (Web + tty)


Como administrador del sistema, probablemente se conecte a servidores remotos usando un programa como GNOME Terminal (o similar) si está en un escritorio Linux, o un cliente SSH como Putty si tiene una máquina con Windows, mientras realiza otros tareas como navegar por la web o consultar su correo electrónico.

¿No sería fantástico si hubiera una forma de acceder a un servidor Linux remoto directamente desde el navegador web? Afortunadamente para todos nosotros, existe una herramienta llamada Wetty (Web + tty) que nos permite hacer precisamente eso, sin la necesidad de cambiar de programa y todo desde la misma ventana del navegador web.

Instalación de Wetty en CentOS 7 y Debian 8

Wetty está disponible en el repositorio de GitHub de su desarrollador. Por esa razón, independientemente de la distribución que esté utilizando, algunas dependencias deben instalarse primero manualmente antes de clonar el repositorio localmente e instalar el programa.

En distribuciones basadas en Fedora (en CentOS 7 y RHEL 7, el repositorio EPEL debe estar habilitado primero):

# yum update && yum install epel-release git nodejs npm

En Debian y sus derivados, la versión de NodeJS disponible en los repositorios de la distribución a septiembre de 2015 (0.10.29) es anterior a la versión mínima requerida para instalar Wetty (0.10.31), por lo que debe instalarlo desde NodeJS GitHub repositorio de desarrolladores:

# aptitude install curl
# curl --silent --location https://deb.nodesource.com/setup_0.12 | bash -
# aptitude update && aptitude install -y git nodejs npm

Después de instalar estas dependencias, clona el repositorio de GitHub:

# git clone https://github.com/krishnasrinivas/wetty

Cambie el directorio de trabajo a wetty, como se indica en el mensaje anterior:

# cd wetty

luego instale Wetty ejecutando:

# npm install

Si recibe algún mensaje de error durante el proceso de instalación, corríjalo antes de continuar. En mi caso, la necesidad de una versión más nueva de NodeJS en Debian era un problema que tenía que resolverse antes de ejecutar npm install con éxito.

Inicio de Wetty y Access Linux Terminal desde el navegador web

En este punto, puede iniciar la interfaz web en el puerto local 8080 para Wetty ejecutando (esto supone que su directorio de trabajo actual es/wetty):

# node app.js -p 8080

Como puede ver en la siguiente imagen:

Pero hágase un favor y NO ingrese su nombre de usuario y contraseña, ya que esta conexión no es segura y no desea que sus credenciales viajen a través del cable sin protección.

Por esa razón, siempre debe ejecutar Wetty a través de HTTPS. Creemos un certificado autofirmado para asegurar nuestra conexión al servidor remoto:

# openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes

Y luego úselo para iniciar Wetty a través de HTTPS.

Tenga en cuenta que deberá abrir el puerto HTTPS personalizado donde querrá ejecutar Wetty:

# firewall-cmd --add-service=https # Run Wetty in the standard HTTPS port (443)
# firewall-cmd --permanent --add-service=https
# firewall-cmd --add-port=XXXX/tcp # Run Wetty on TCP port XXXX
# nohup node app.js --sslkey key.pem --sslcert cert.pem -p 8080 &

El último comando de la secuencia anterior iniciará Wetty en segundo plano escuchando en el puerto 8080. Dado que estamos usando un certificado autofirmado, es de esperar que el navegador muestre una advertencia de seguridad. Es perfectamente seguro ignorarlo y agregue una excepción de seguridad, ya sea de forma permanente o para la sesión actual:

Una vez que haya confirmado la excepción de seguridad, podrá iniciar sesión en su VPS utilizando Wetty. No hace falta decir que puede ejecutar todos los comandos y programas como si estuviera sentado frente a un terminal real o virtual, como puede ver en la siguiente pantalla: