GoTTY: comparta su terminal de Linux (TTY) como una aplicación web


GoTTY es una sencilla herramienta de línea de comandos basada en GoLang que le permite compartir su terminal (TTY) como una aplicación web. Convierte las herramientas de línea de comandos en aplicaciones web.

Emplea el emulador de terminal de Chrome OS ( hterm ) para ejecutar un terminal basado en JavaScript en los navegadores web. Y, lo que es más importante, GoTTY ejecuta un servidor de socket web que básicamente transfiere la salida de TTY a los clientes y recibe información de los clientes (es decir, si se permite la entrada de clientes) a TTY .

Su arquitectura (hterm + web socket idea) se inspiró en el programa Wetty que habilita el terminal a través de HTTP y HTTPS .

Debe tener el entorno GoLang (Go Programming Language) instalado en Linux para ejecutar GoTTY.

Cómo instalar GoTTY en sistemas Linux

Si ya tiene un entorno GoLang en funcionamiento, ejecute el comando go get a continuación para instalarlo:

# go get github.com/yudai/gotty

El comando anterior instalará el binario GoTTY en su variable de entorno GOBIN , intente verificar si ese es el caso:

# ls $GOPATH/bin/

Cómo usar GoTTY en Linux

Para ejecutarlo, puede utilizar la variable GOBIN env y la función de autocompletar del comando de la siguiente manera:

# $GOBIN/gotty

De lo contrario, ejecute GoTTY o cualquier otro programa Go sin escribir la ruta completa al binario, agregue su variable GOBIN a PATH en el archivo ~/.profile usando el comando exportar a continuación :

export PATH="$PATH:$GOBIN"

Guarde el archivo y ciérrelo. Luego fuente el archivo para efectuar los cambios anteriores:

# source ~/.profile

La sintaxis general para ejecutar comandos de GoTTY es:

Usage: gotty [options] <Linux command here> [<arguments...>]

Ahora ejecute GoTTY con cualquier comando como el comando df para ver el espacio y el uso de las particiones de disco del sistema desde el navegador web:

# gotty df -h

GoTTY iniciará un servidor web en el puerto 8080 de forma predeterminada. Luego abra la URL: http://127.0.0.1:8080/ en su navegador web y verá el comando en ejecución como si se estuviera ejecutando en su terminal:

Cómo personalizar GoTTY en Linux

Puede modificar las opciones predeterminadas y su terminal ( hterm ) en el archivo de perfil ~/.gotty , cargará este archivo de forma predeterminada en caso de que exista.

Este es el principal archivo de personalización leído por los comandos de Gotty, así que créalo de la siguiente manera:

# touch ~/.gotty

Y configure sus propios valores válidos para las opciones de configuración (encuentre todas las opciones de configuración aquí) para personalizar GoTTY, por ejemplo:

// Listen at port 9000 by default
port = "9000"

// Enable TSL/SSL by default
enable_tls = true

// hterm preferences
// Smaller font and a little bit bluer background color
preferences {
    font_size = 5,
    background_color = "rgb(16, 16, 32)"
}

Puede configurar su propio archivo index.html utilizando la opción --index desde la línea de comando:

# gotty --index /path/to/index.html uptime

Cómo usar las funciones de seguridad en GoTTY

Debido a que GoTTY no ofrece seguridad confiable de manera predeterminada, debe usar manualmente ciertas funciones de seguridad que se explican a continuación

Tenga en cuenta que, de forma predeterminada, GoTTY no permite que los clientes escriban datos en el TTY, solo habilita el cambio de tamaño de la ventana.

Sin embargo, puede usar la opción -w o --permit-write para permitir que los clientes escriban en el TTY, lo cual no se recomienda debido a las amenazas de seguridad al servidor.

El siguiente comando utilizará el editor de línea de comandos vi para abrir el archivo fossmint.txt para editarlo en el navegador web:

# gotty -w vi fossmint.txt

A continuación se muestra la interfaz vi como se ve desde el navegador web (use los comandos vi aquí como de costumbre):

Intente activar un mecanismo de autenticación básico, donde los clientes deberán ingresar el nombre de usuario y la contraseña especificados para conectarse al servidor de GoTTY.

El siguiente comando restringirá el acceso del cliente utilizando la opción -c para solicitar a los usuarios las credenciales especificadas (nombre de usuario: prueba y contraseña: @ 67890 ):

# gotty -w -p "9000" -c "test:@67890" glances

Otra forma de restringir el acceso al servidor es mediante la opción -r . Aquí, GoTTY generará una URL aleatoria para que solo los usuarios que conocen la URL puedan acceder al servidor.

También use la opción –título del formato "GoTTY - {{.Command}} ({{.Hostname}}) " para definir el título de la interfaz de los navegadores web y el comando de miradas se usa para mostrar las estadísticas de monitoreo del sistema :

# gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

El siguiente es el resultado del comando anterior como se ve desde la interfaz del navegador web:

Debido a que, de forma predeterminada, todas las conexiones entre el servidor y los clientes no están cifradas, cuando envía información secreta a través de GoTTY, como las credenciales de usuario o cualquier otra información, debe usar -t o - -tls opción que habilita TLS/SSL en la sesión:

De forma predeterminada, GoTTY leerá el archivo de certificado ~/.gotty.crt y el archivo de clave ~/.gotty.key , por lo tanto, comience también creando una certificación autofirmada como el archivo de claves que utiliza el comando openssl a continuación (responda la pregunta para generar el certificado y los archivos de claves):

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt

Luego, use GoTTY de manera segura con SSL/TLS habilitado de la siguiente manera:

# gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Puede utilizar los multiplexores de terminal para compartir un solo proceso con varios clientes, el siguiente comando iniciará una nueva sesión de tmux llamada gotty con el comando de miradas (asegúrese de tener tmux instalado):

# gotty tmux new -A -s gotty glances 

Para leer un archivo de configuración diferente, use la opción –config "/ path/to/file " así:

# gotty -tr --config "~/gotty_new_config" --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances

Para mostrar la versión de GoTTY, ejecute el comando:

# gotty -v 

Visite el repositorio de GoTTY GitHub para encontrar más ejemplos de uso: https://github.com/yudai/gotty

¡Eso es todo! ¿Lo ha probado? ¿Cómo encuentras GoTTY? Comparta sus pensamientos con nosotros a través del formulario de comentarios a continuación.