GoTTY: comparta su terminal 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 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 un navegador web. Y lo que es más importante, GoTTY ejecuta un servidor de socket web que básicamente transfiere la salida del TTY a los clientes y recibe entradas de los clientes (es decir, si se permiten entradas de los clientes) y las reenvía. al TTY.
Lea también: Teleconsola: comparta su terminal Linux con sus amigos
Su arquitectura (hterm + idea de socket web) se inspiró en el programa Wetty que permite la terminal a través de HTTP y HTTPS.
Requisitos previos:
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 utilizar GoTTY en Linux
Para ejecutarlo, puede utilizar la variable GOBIN env y la función de autocompletado 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 export a continuación :
export PATH="$PATH:$GOBIN"
Guarde el archivo y ciérrelo. Luego obtenga 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 del 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 archivo de personalización principal leído por los comandos gotty, así que créelo de la siguiente manera:
touch ~/.gotty
Y establezca 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 usando la opción --index
desde la línea de comando:
gotty --index /path/to/index.html uptime
Cómo utilizar las funciones de seguridad en GoTTY
Debido a que GoTTY no ofrece seguridad confiable de forma predeterminada, deberá utilizar manualmente ciertas funciones de seguridad que se explican a continuación.
Permitir a los clientes ejecutar comandos/escribir entradas en la terminal
Tenga en cuenta que, de forma predeterminada, GoTTY no permite a los clientes escribir datos en el TTY, solo permite cambiar el tamaño de la ventana.
Sin embargo, puede utilizar la opción -w
o --permit-write
para permitir que los clientes escriban en el TTY, lo cual no se recomienda debido a 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 vista desde el navegador web (use los comandos vi aquí como de costumbre):
Utilice GoTTY con autenticación básica (nombre de usuario y contraseña)
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 GoTTY.
El siguiente comando restringirá el acceso del cliente usando la opción -c
para solicitar a los usuarios las credenciales especificadas (nombre de usuario: test y contraseña: @67890):
gotty -w -p "9000" -c "test:@67890" glances
Gotty Generar URL aleatoria
Otra forma de restringir el acceso al servidor es mediante la opción -r
. Aquí, GoTTY generará una URL aleatoria para que sólo los usuarios que conocen la URL puedan acceder al servidor.
Utilice también la opción –title-format “GoTTY – {{ .Command }} ({{ .Hostname }})” para definir el título de la interfaz del navegador web y el comando vistazos se utiliza para mostrar estadísticas de monitoreo del sistema. :
gotty -r --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
El siguiente es el resultado del comando anterior visto desde la interfaz del navegador web:
Utilice GoTTY con SSL/TLS
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 credenciales de usuario o cualquier otra información, debe usar -t
o - -tls
opción que habilita TLS/SSL en la sesión:
GoTTY leerá de forma predeterminada el archivo de certificado ~/.gotty.crt
y el archivo de clave ~/.gotty.key
; por lo tanto, comience creando también una certificación autofirmada. como archivo de clave usando el comando openssl a continuación (responda la pregunta formulada para generar el certificado y los archivos de clave):
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ~/.gotty.key -out ~/.gotty.crt
Luego use GoTTY de forma segura con SSL/TLS habilitado de la siguiente manera:
gotty -tr --title-format "GoTTY - {{ .Command }} ({{ .Hostname }})" glances
Comparta su terminal con varios clientes
Puede utilizar multiplexores de terminal para compartir un único 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 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.