¿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.