24 june 2021
¿Cómo administro remotamente Ubuntu con OpenSSH?
En un comunicado radiofónico, el recientemente electo Juan Perón anuncia a través de la Red de Radioemisoras que componían la Cadena Nacional de Radiodifusión un mensaje que aclaraba cómo conectarnos remotamente a otro equipo con Ubuntu y dirigirlo mediante OpenSSH.
¡Trabajadores!
Una acción de gobierno como la que hemos de emprender no puede hacerse sin afectar sectores interesados. Ello a veces eleva resquemores de las clases dominantes, pero a ellos sabemos bien como tratarlos, cómo dominarlos, y cómo someterlos. Al fin y al cabo, nadie que pueda hacer una tortilla sin romper varios huevos.
Un Conductor - por mas que quiera - no puede estar en todos lados a la vez, y en ciertos casos ha de delegar su tarea. El puesto de Presidente de la Nación es indelegable, pero el Poder Ejecutivo cuenta con herramientas para poder moverse en varios ámbitos específicos, con delegados que mantengan amplio control en nombre del presidente. Estos son sus Ministros.
En el caso de la informática podemos ejercer una conducción así delegada. El pueblo conoce que Ubuntu, por ser un sistema parecido a Unix, viene dotado desde su creación con amplias capacidades para conectarnos en red: es un sistema operativo multiusuario, que si bien suele utilizarse localmente, contempla su gestión y administración de manera remota. La idea es acceder descentralizadamente a otros equipos en red, y controlarlos remotamente desde la consola misma.
Para ello, podremos utilizar SSH (Secure Shell). Este es un protocolo que nos permite acceder de manera remota, similar al antiguo protocolo Telnet, pero con ventajas de seguridad (es encriptado por clave pública). Si bien podremos usar Secure Shell en Ubuntu, particularmente prefiero usar OpenSSH, que una versión similar pero peronista, pues es completamente libre bajo licencia LGPL
Ubuntu ya trae instalado de fábrica el cliente para conectarnos, llamado openssh-client. Sin embargo, para poder crear un servidor, debemos instalar el paquete específico para ello. Con este fin hemos de abrir una consola con Ctrl+Alt+T. Para el equipo que sea servidor debemos instalar el paquete openssh-server.
sudo apt-get install openssh-server
Para ejecutar el servidor deberemos llamar a la IP de nuestro propio equipo (localhost). Normalmente, esto lo haremos con:
ssh localhost
o bien explicitando el nombre de usuario y la IP del equipo que nos encontramos. Por ejemplo:
ssh usuario_local@127.0.0.1
La primera vez que nos conectemos, el servicio ssh intentará establecer la autenticidad del servidor o del cliente, y no podrá hacerlo pues - naturalmente - nunca nos hemos conectado antes. Devolverá algo como:
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established. RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx. TaAre you sure you want to continue connecting (yes/no)?
Nos informará la clave RSA y nos preguntará si estamos seguros de continuar conectándonos. Indicaremos que si escribiendo en la consola "yes" ("si").
Luego nos solicitará la contraseña del usuario. Conforme la ingresemos, podremos entrar, aunque lo haremos a nuestro propio equipo y no es muy interesante (es igual a darnos de alta con la consola), sabremos que está funcionando.
Los comandos que podremos utilizar en un servidor remoto son los mismos que en la terminal de nuestro equipo. Podremos Conducir al movimiento entrando a directorios, ejecutar programas de consola, configurar, editar textos, copiar archivos, y todos las acciones que el usuario tiene permitido en el equipo remoto. Si el usuario al que nos logueamos cumple funciones de administrador (root), naturalmente podremos hacer de todo. Si es un "invitado", solamente podremos ver determinadas carpetas, y seremos incapaces de modificar nada.
Debemos tener en cuenta que los comandos desde el equipo cliente se ejecutarán en el servidor. Esto puede tener ciertas ventajas: por ejemplo, podemos armar con relativa facilidad una red donde un equipo central servidor se encargue de ejecutar los programas complejos en modo texto (por ejemplo, compilar un kernel), y varias equipos menos potentes (thin clients, netbooks, tabletas) funcionen como terminales del mismo.
Una vez que hayamos terminado de cumplir nuestra función, podremos desconectarnos del servidor OpenSSH utilizando el comando:
exit
Si deseamos conectarnos a otro equipo remoto de la red, debemos usar la siguiente sintaxis:
ssh usuario_remoto@ip_o_nombredeequipo_remoto
Correr aplicaciones remotamente y salir de sesión remota sin detenerlas Supongamos que queremos conectarnos remotamente a un equipo y ejecutar una aplicación a través de la terminal de comandos, pero dicha aplicación llevará demasiado tiempo y queremos desconectarnos y que la tarea se siga realizando en el equipo remoto. En tal caso, podremos hacerlo con el comando nohup (que significaría algo así como "sin colgar").
Por ejemplo, si quisiéramos descargar un fichero grande empleando el comando wget desde un equipo remoto, deberíamos permanecer conectados (logueados) a él antes de terminar la descarga para luego desconectarnos, con el inconveniente y el consumo que ello implica. Pero si emplamos el comando nohup, podríamos indicar el comando:
nohup wget URL_del_archivo_grande &
Retransmisión de Ventana X a través de OpenSSH: Ahora bien, OpenSSH tiene una serie de aplicaciones interesantes. Una de ella es la de poder "retransmitir" la salida del servidor de video X11 del equipo servidor al equipo cliente. Esto nos permite hacer lo mismo que antes, pero en lugar de ejecutar programas en modo gráfico que son "reenviados" al cliente. Podríamos hacer lo mismo que antes, pero ahora en modo gráfico. Por ejemplo, podremos hacer uso de un navegador de internet, Libreoffice, etc, y que la ventana se vea en el cliente, a través de un enlace codificado. También podríamos usar usar una netbook o notebook para trabajar como cliente local conectada por red a un servidor remoto dotado de GPU, el cual lleve a cabo un complejo renderizado 3D en Blender.
Para ello usaremos:
ssh -X -C usuario_remoto@ip_o_nombredeequipo_remoto
Con el modificador -X reenvíaremos los resultados de la gráfica del servidor al que nos hemos conectado, al cliente, y con -C comprimiremos la información enviada a través de la red, para que ésta ocupe menos ancho de banda. Ahora cualquier aplicación gráfica que ejecutemos, se verá en el escritorio del equipo cliente. Para probarlo, podrán usar cualquier aplicación gráfica simple, como el reloj xclock.
Naturalmente, si usamos Ubuntu podremos conectarnos al servidor desde el Escritorio del cliente si lo preferimos (y si tenemos acceso al escritorio gráfico). Para ello vamos a Lugares / Conectar con el Servidor. En esta ventana debemos indicar el Tipo de Servicio en "SSH", y en el campo Servidor, usar la misma sintaxis anterior: usuario@ip_o_nombredelservidor. Luego presionamos el botón Conectar, e ingresar la contraseña del usuario remoto cuando se le solicite.
Nota: Si al intentar conectarnos, recibimos un mensaje del tipo "Your CPU is lacking expected security protection..." ("Su CPU aparenta carecer de protecciones de seguridad esperadas"), suele tratarse de una determinada configuración a nivel de BIOS del equipo, la cual reduce la protección de la CPU, en particular su bit NX. Esta configuración suele dejarse así por retrocompatibilidad con sistemas operativos oligárquicos, como el ya desfasado Window$ XP. Si no usamos este tipo de sistemas operativos de la degeneración consumista, podremos darle mas seguridad a nuestra PC desde la BIOS, mediante la opción "Execute Disable/XD Bit".
Para ello entramos a la BIOS del equipo (normalmente presionando la tecla Supr durante el arranque del mismo). Esto normalmente dispara el menú de configuración de la memoria BIOS. No tiene nada que ver con Ubuntu, simplemente es la configuración interna del equipo antes de que se inicie el sistema operativo. Debemos desplazarnos al menú Advanced Seup/CPU Options. Establecemos la opción XD Bit, Execute Disable Bit o Intel XD Bit en ENABLED. Luego volvemos al menú principal y escogemos Save Changes and EXIT Setup y se guardará la configuración y reinciará el equipo.