cuidado con dar acceso ssh a cualquiera, a menos que te quieras comer estas bromas

controlar un ordenador remotamente no es una broma... ¿o sí?

by trevi | 1/20/2026

imagen de una terminal con comandos en color verde

image credit: link


Hola. Si en algún momento has tratado de conectarte a un ordenador de forma remota a través de la terminal seguramente conozcas el comando ssh. El funcionamiento es muy sencillo: nos conectamos a través de la dirección IP del ordenador “destino”, y lo controlamos. Pero si damos acceso a cualquier persona, puede pasar cualquier cosa, especialmente si el usuario se encuentra en la lista de “sudoers” (en Unix/Linux). Es por eso que por defecto el puerto 22/tcp (o puerto 22 en el protocolo TCP) se encuentra bloqueado en sistemas Linux que usen ufw como Firewall, por ejemplo. Por ese motivo tenemos que ejecutar ufw allow ssh o ufw allow 22/tcp.

Cuando un sistema se encuentra desprotegido, como puede ser el caso de una máquina virtual con el puerto SSH y credenciales expuestas, a algunos nos gusta toquetear con el sistema, gastar alguna broma o realmente hacer lo que nos da la gana, pero a mí me gusta más bromear un poco, hacer cosas como las siguientes:


1. Cambio de resolución

Esta es bastante interesante y puede asustar a cualquiera que esté usando la máquina en el momento.

Cualquiera que tenga unas nociones básicas de Linux debería conocer el comando xrandr. Es un programa que nos permite cambiar la resolución de nuestras pantallas de forma conveniente desde la terminal. Un problema de esto es que xrandr y otros programas que dependan de pantallas no se pueden usar desde una terminal a la ligera. Si intentamos usarlo desde una tty, o desde ssh veremos que no pasa nada:

$ xrandr
Can't open display

Como podemos ver, nos indica que no puede “abrir” la pantalla, o dicho de otra manera, que no puede interactuar con nuestro monitor. ¿Por qué pasa esto? Porque normalmente en Linux, cuando abrimos una terminal en un monitor, ya sea una tty o una ventana en el escritorio, se establece automáticamente la variable $DISPLAY. Esto permite que los programas que necesiten interactuar con los monitores sepan qué pantalla usar. Debo admitir que no sé mucho sobre el funcionamiento de las pantallas y cómo las gestiona Linux, pero lo único que debemos saber por ahora es que xrandr necesita esta variable para funcionar.

Si inspeccionamos esta variable en un sistema de Linux normal desde un entorno de escritorio, obtendremos un resultado como el siguiente:

$ echo $DISPLAY
:0.0

Entonces sabemos que debemos tener una variable llamada $DISPLAY con el valor :0.0 (que también se puede indicar como :0) durante la ejecución de xrandr.

Normalmente, intentaríamos hacer algo como:

$ DISPLAY=:0
$ xrandr

Pero de nuevo, obtendríamos el error de Can't open display. Esto se debe a la forma en la que funcionan las variables en Linux, pero no entraré mucho en detalle. En su lugar, podemos usar una de estas dos opciones:

$ DISPLAY=:0 xrandr

o

$ export DISPLAY=:0
$ xrandr

Si usamos esta última opción podemos ejecutar xrandr las veces que queramos, y no nos dará error, aunque algunos prefieren usar la primera opción. Es cuestión de preferencia personal, pero por simplicidad vamos a usar el método de export.

De nuevo, si ejecutamos xrandr, veremos que nos lista una cantidad inmensa de configuraciones/resoluciones de pantalla, que en el caso de este programa se denominan “modos”.

$ xrandr
Screen 0: minimum 1 x 1, current 1718 x 928, maximum 16384 x 16384
Virtual1 connected 1718x928+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1718x928      60.00*+
   4096x2160     60.00    59.94
   2560x1600     59.99    59.97
   1920x1440     60.00
   1856x1392     60.00
   1792x1344     60.00
   2048x1152     60.00
   1920x1200     59.88    59.95
   1920x1080     60.00
   1600x1200     60.00
   1680x1050     59.95    59.88
   1400x1050     59.98    59.95
   1600x900      60.00
   1280x1024     60.02
   1440x900      59.89    59.90
   1280x960      60.00
   1366x768      59.79    60.00
   1360x768      60.02
   1280x800      59.81    59.91
   1280x768      59.87    59.99
   1280x720      60.00
   1024x768      60.00
   800x600       60.32    56.25
   848x480       60.00
   640x480       59.94
Virtual2 disconnected (normal left inverted right x axis y axis)
Virtual3 disconnected (normal left inverted right x axis y axis)
Virtual4 disconnected (normal left inverted right x axis y axis)
Virtual5 disconnected (normal left inverted right x axis y axis)
Virtual6 disconnected (normal left inverted right x axis y axis)
Virtual7 disconnected (normal left inverted right x axis y axis)
Virtual8 disconnected (normal left inverted right x axis y axis)

En este caso, al estar en una máquina virtual me aparecen muchas más configuraciones posibles, y otras 7 pantallas virtuales además de la principal. Pero si nos fijamos, podemos ver que en la segunda linea dice:

Virtual1 connected #...

Este es el nombre del “output” que vamos a usar en los comandos. Cuando aparezca <output> en los comandos que aparezcan a partir de ahora, deberemos reemplazarlo con lo que haya aparecido en esa linea, en este caso será Virtual1 pero en máquinas reales será un valor diferente.

Ahora, comenzaremos a analizar las resoluciones que nos aparecen. Por ejemplo, podemos probar con la más baja, que es la siguiente:

   640x480       59.94

Podríamos crear nuestras propias resoluciones también, pero elegiremos esta por ahora porque es la predeterminada, y la pondremos con este comando:

$ xrandr --output <output> --mode 640x480

Así podemos bromear a quien esté usando la máquina, cambiando su resolución de pantalla de repente. Es bastante gracioso, aunque también podemos probar más cosas…


2. Fondo de pantalla

Sí, es posible cambiar el fondo de pantalla desde la terminal, y también desde SSH. Pero debido a motivos personales, no pude terminar de escribir esta publicación a tiempo, y también preferiría dejarlo así durante un tiempo, porque sé que esta publicación se leerá en mi clase y conozco bien a los especímenes que se encuentran en ella. No, gracias.