Comunicación mediante CLI
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.
Enviar mensajes a todos los usuarios utilizando Wall
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:
sudo wall "Debido a tareas de mantenimiento, en una hora reiniciaremos el sistema."
También podemos utilizar la salida estándar, de la siguiente manera:
echo "Debido a tareas de mantenimiento, en una hora reiniciaremos el sistema." | wall
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.
Enviar un mensaje a un usuario en particular con write
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:
write pepe pts/1 #usa CTROL+D para terminar de enviar mensajes
Esto solo generará una comunicación unidireccional, si queremos comunicarnos en ambas direcciones deberemos usar una herramienta externa.
Conversación en directo con talk
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 contalkd
, 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.
apt-get install talk talkd
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:
talk persona [ttynombre]
Caso de ejemplo
Vamos a usar esto para establecer una comunicación entre dos usuarios de un servidor
Primeramente necesitaremos crear más de un usuario:
sudo useradd -m -s /bin/bash pepe
sudo useradd -m -s /bin/bash maria
sudo passwd pepe
sudo passwd maria
Podemos ahora acceder con shells paralelas o a través de sesiones remotas de telnet o ssh.
Ahora es tan simple como:
#Desde mi usuario pepe
talk maria@localhost
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
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.
1. Instalar ssh-chat
en el Servidor
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:
wget https://github.com/shazow/ssh-chat/releases/download/v1.10/ssh-chat-linux_amd64.tgz
tar -xvzf ssh-chat-linux_amd64.tgz
chmod +x ssh-chat
sudo mv ssh-chat /usr/local/bin/ssh-chat
Verifica que la instalación funcionó:
ssh-chat --help
2. Crear usuarios para el chat
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:
sudo useradd -m -s /bin/bash chat-admin
sudo passwd chat-admin
Cambia al usuario root y genera claves de ssh para el usuario chat-admin
:
sudo su -
su - chat-admin
ssh-keygen -t rsa -b 4096 -o -a 100 -f ~/.ssh/id_rsa_sha2
3. Ejecutar el Servidor de Chat
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):
ssh-chat --bind :2222
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 guía):
ssh-chat --bind :2222 --identity ~/.ssh/id_rsa_sha2
Si todo ha ido bien deberías recibir un mensaje de "Listening for connections on [::]:2222"
4. Conectar Clientes al Chat
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):
ssh -p 2222 ubuntu@IP_DEL_SERVIDOR
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
5. Hacer que ssh-chat
se ejecute en segundo plano
ssh-chat
se ejecute en segundo planoPara que el servidor siga activo tras cerrar la terminal, pondremos la tarea en segundo plano:
ssh-chat --bind :2222 &
Siempre puedes cancelarla con:
kill %1
6. Hacer que ssh-chat
se ejecute automáticamente al iniciar el servidor
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:
sudo nano /etc/systemd/system/ssh-chat.service
Al que añadiremos el siguiente contenido (tal y como dice la documentación):
[[Unit]
Description=SSH Chat Server
After=network.target
[Service]
User=chat-admin
ExecStart=/usr/local/bin/ssh-chat --bind :2222 --identity "/home/chat-admin/.ssh/id_rsa_sha2" --admin "/home/chat-admin/.ssh/id_rsa_sha2.pub"
Restart=always
ProtectHome=yes
NoNewPrivileges=yes
[Install]
WantedBy=multi-user.target
Guardar el archivo y habilitamos el servicio:
sudo systemctl daemon-reload
sudo systemctl enable ssh-chat
sudo systemctl start ssh-chat
Verificar que está corriendo:
sudo systemctl status ssh-chat
Para pararlo hasta que se reinicie el servidor será tan sencillo como:
sudo systemctl stop ssh-chat
EXTRA: Comandos en el chat
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.
Última actualización