Comunicación mediante CLI
Última actualización
Última actualización
Con las nuevas tecnologías y el uso de mensajería instantánea quizás ya no tenga sentido pero siempre es interesante conocer estos métodos de comunicación para administradores de sistemas. Para ello nos vamos a servir de diferentes herramientas disponibles en sistemas GNU/Linux.
Con la herramienta wall
podemos enviar mensajes a todos los usuarios conectados al sistema, muy útil para equipos con el rol de servidor o de máquina de salto para otros sistemas.
Por ejemplo:
También podemos utilizar la salida estándar, de la siguiente manera:
Este mensaje les llegará a otros usuarios registrados en ese momento en el sistema, incluso si ahora mismo están en otro sistema, pero han utilizado el host como máquina de salto, vía ssh.
Para enviar un mensaje a un usuario en particular podemos utilizar la herramienta write
, para ello primero debemos saber cuales son los usuarios conectados, utilizando el comando who
, como se muestra en el ejemplo.
De esta manera ya podemos enviar el mensaje:
Esto solo generará una comunicación unidireccional, si queremos comunicarnos en ambas direcciones deberemos usar una herramienta externa.
Una tercera opción es utilizar la herramienta talk
, este usa el protocolo de Internet Control Message Protocol (ICMP) y TCP/UDP para establecer la conexión:
Protocolo utilizado:
Inicialmente, talk
usa ICMP para verificar si el otro usuario está en línea.
Luego, usa el puerto 517/UDP en el servidor talkd
(daemon) para gestionar las conexiones.
La comunicación entre los clientes se da en puertos dinámicos UDP.
Demonio asociado:
talk
se comunica con talkd
, que escucha en el puerto 517/UDP y coordina la sesión.
Por norma general debemos instalarlo, ya que no viene por defecto en el sistema.
A diferencia de las otras herramientas, con talk
podemos entablar una conversación con otro usuario, como si fuese un chat.
Su forma de uso es:
Vamos a usar esto para establecer una comunicación entre dos usuarios de un servidor
Primeramente necesitaremos crear más de un usuario:
Ahora es tan simple como:
A la usuaria maria
le llegará una solicitud de conexión de este tipo:
Ahora simplemente deberá responder tal y como aparece en la última línea (talk ubuntu@localhost
).
Talk es una herramienta antigua que ya no se usa, actualmente hemos evolucionado a la mensajería moderna: irc
, XMPP
, tmux
, weechat
, etc
SSH Chat es un sistema de chat basado en SSH que permite a los usuarios conectarse a un servidor y comunicarse de manera segura sin necesidad de instalar software adicional más allá de un cliente SSH. Funciona como una alternativa minimalista y encriptada a IRC o a mensajerías tradicionales.
Para comprender como funciona:
El servidor de chat actúa como un servidor SSH
Se ejecuta un proceso en el servidor que escucha conexiones SSH.
En lugar de iniciar una sesión de shell, muestra un entorno de chat en la terminal.
Los clientes se conectan usando SSH
Cualquier usuario con acceso al servidor puede unirse con un simple comando.
No requiere una cuenta específica, ya que se puede acceder como un usuario anónimo o autenticado.
Cifrado automático con SSH
Todo el tráfico está protegido con el cifrado de SSH.
No es necesario configurar TLS o SSL por separado.
Sistema de usuarios y roles
Los administradores pueden gestionar permisos y moderar el chat.
Se pueden usar claves SSH para verificar identidades y evitar usuarios anónimos.
ssh-chat
en el ServidorPrimero, accedemos al servidor y descargamos la aplicación de su github que tendremos que descomprimir y mover a la carpeta de binarios:
Verifica que la instalación funcionó:
Es recomendable ejecutar ssh-chat
con un usuario sin privilegios para evitar problemas de seguridad, yo crearé el usuario "chat-admin" al que luego le asignaremos una contraseña:
Cambia al usuario root y genera claves de ssh para el usuario chat-admin
:
Con un usuario creado, toca proceder con el servidor de chat, para ello debemos iniciar una instancia del chat en el puerto 2222 (ya que el 22 está ocupado por OpenSSH):
Si todo ha ido bien deberías recibir un mensaje de "Listening for connections on [::]:2222"
Desde cualquier equipo con SSH, ahora trataremos de conectarnos al chat abierto en el puerto correspondiente (ten en cuenta la redirección de puertos si estas en una MV en red NAT):
En el caso que no funcione directamente puedes usar el Tabby para conectarte o bien descargar la clave privada y usar la clave privada en vez de contraseña
ssh-chat
se ejecute en segundo planoPara que el servidor siga activo tras cerrar la terminal, pondremos la tarea en segundo plano:
Siempre puedes cancelarla con:
ssh-chat
se ejecute automáticamente al iniciar el servidorPara hacer que por defecto se active el chat para el servidor y siga activo, podemos crear un servicio systemd para que ssh-chat
arranque con el sistema. Para ello, crearemos un archivo de servicio:
Guardar el archivo y habilitamos el servicio:
Verificar que está corriendo:
Para pararlo hasta que se reinicie el servidor será tan sencillo como:
Dentro del chat, puedes usar comandos para realizar acciones, estos comandos los puedes ver con /help
, algunos ejemplos son:
/nick MiNombre
→ Cambiar tu nombre.
/msg usuario mensaje
→ Enviar mensaje privado.
/kick usuario
→ Expulsar a alguien.
/ban usuario
→ Bloquear a alguien.
Podemos ahora acceder con shells paralelas o a través de sesiones remotas de telnet o .
En tu usuario por defecto te funcionará pero si quieres usar el usuario recién creado ardilla debes especificar un archivo de claves permitidas (si tienes problemas con esto, revisa en la ):
Al que añadiremos el siguiente contenido (tal y como dice la ):