Controlar GNU/Linux desde Android vía SSH

Algo que siempre me gustó hacer es controlar de forma remota una computadora. Se hace necesario cuando se trabaja con servidores ya que estos se ubican en salas refrigeradas para mantener la temperatura del equipo en nivel óptimo. Los administradores de sistemas algunas que otras veces nos metemos en esas salas, pero en general controlamos todo de forma remota y por línea de comandos. Esta configuración a distancia es también la misma herramienta que utilizan quienes contratan un hosting web y necesitan tener control sobre el servidor.

En este artículo voy a explicar algo que puede parecer un juego, pero en realidad es bastante útil y poderoso. Vamos a ver cómo controlar una PC con GNU/Linux instalado desde un dispositivo móvil con Android. Siempre en el ámbito de una LAN. Se podría hacer a través de internet, pero para eso, el dispositivo necesitaría tener conexión a la gran red y además, la PC debería abrir puertos a través del firewall. La idea de este artículo es darle un uso hogareño a esta técnica como por ejemplo apagar la computadora estando en otra habitación.

Vamos a necesitar instalar un servidor SSH en la PC y configurarlo de forma correcta. En el dispositivo móvil habrá que instalar la aplicación ConnectBot que es el cliente SSH y es quien abrirá la conexión hacia la PC. Para que estos dos aparatos se puedan comunicar, deberá estar correctamente configurada la red Wi-Fi mediante un router.

Vale aclarar que SSH no es sólo para conectar la PC desde un dispositivo móvil, sino desde cualquier equipo que disponga de un cliente SSH.

Instalar y configurar servidor SSH en Ubuntu

SSH significa Secure SHell y es un protocolo de comunicación donde la información pasa siempre de forma encriptada. Si alguna vez usaron Telnet, lo encontrarán muy parecido, sólo que SSH es seguro. En este ejemplo utilizo Ubuntu, pero en otras distros, como por ejempo Fedora, es igualmente sencillo sólo hay que usar yum en vez de apt. En Ubuntu abrimos un Terminal y tipeamos

Luego de instalarlo, debemos recibir el siguiente mensaje (el número de proceso puede ser distinto)

Eso significa que el servidor ya está instalado. Ahora hay que configurarlo. Esta parte es muy importante así que no se la salteen.

La configuración del servidor SSH está en el archivo /etc/ssh/sshd_config. Lo editamos con nuestro editor preferido. Voy a usar gedit en este caso.

Buscamos la clave PermitRootLogin y nos aseguramos que diga no. Si dice yes, la cambiamos a no. Esto sirve para que nadie se pueda conectar como root. Entonces, esa línea queda:

Debajo de esa línea, podemos agregar AllowUsers que en realidad no viene por defecto. Esta opción sirve para autorizar determinados usuarios a conectarse al servidor.

Donde usuario 1, usuario2 y usuario3 son los únicos usuarios habilitados a conectarse vía SSH.

SSH suele usar el puerto 22, pero podemos cambiarlo para mejorar la seguridad. Buscamos la línea Port y le ponemos el número de puerto que queramos. Tengan cuidado no poner un puerto que utilice otro protocolo.

En la línea LoginGraceTime 30 el número está asociado con los segundos de tiempo que nos dará el servidor cuando nos conectemos hasta que logremos introducir usuario y contraseña de forma exitosa. Es decir que si tardamos más de 30 segundos, el servidor SSH cerrará la conexión. Así que si son lentos escribiendo pueden aumentar ese número. Tenganlo en cuenta porque en este ejemplo vamos a tipear con el celular.

Buscamos ahora la línea MaxAuthTries, si no está la agregamos (en cualquier parte). Esta línea indica la cantidad de intentos de login que va a permitir el servidor, pasada esa cantidad, cierra la conexión. Por ejemplo, si queremos darle hasta tres intentos.

Por último, la línea ListenAddress indica en qué dirección IP el servidor estará escuchando. Esto es útil si se tienen, por ejemplo, varias IP públicas, pero sólo se quiere permitir que el servidor SSH esté activo en alguna de ellas. Pero como no es el caso de este ejemplo, vamos a dejarlo en:

Con esos cambios, el servidor SSH queda un poco más seguro. Si quieren añadir más seguridad pueden permitir o prohibir hosts específicos editando los archivos /etc/hosts.allow y /etc/hosts.deny. Se suele prohibir todos los hosts en hosts.deny y luego habilitar algunos en hosts.allow. Pero, si hacen eso, recuerden que afectará no sólo a SSH sino a todas las conexiones de red. Para este ejemplo casero, no es necesario editar nada de eso.

Resta reiniciar el servidor SSH para que actualice los cambios. En Ubuntu lo hacemos con:

O con:

Instalar cliente de SSH en Android

Ahora pasamos a nuestro dispositivo móvil con Android instalado. Vamos al Android Market y buscamos la aplicación ConnectBot. Ustedes pueden instalarla, en mi caso, yo ya la tenía instalada.

connectbox-android-market

Ahora abrimos la aplicación en el dispositivo móvil. Veremos la siguiente pantalla.

connectbox-android

Vamos a conectarnos con:

Si no saben cuál es la IP de la PC con Ubuntu en la red, pueden usar el siguiente comando (en la PC)

Y leer la salida de la segunda línea de la interfaz eth0 (si no tienen otra configurada)

La primer dirección que aparece es la del equipo. En mi caso: 192.168.0.3.

Cuando nos conectamos vía SSH, por ser la primera vez veremos un mensaje donde el servidor nos pide confirmación para establecer unas claves que quedan en ambos equipos y se utilizan por seguridad. Confirmamos poniendo Yes.

ssh-connectbox

Luego el servidor nos pedirá la contraseña del usuario. La ingresamos y ya tendremos acceso a la PC desde la línea de comandos. Ahora, es como si estuviéramos usando la consola, pero desde el dispositivo móvil.

Podemos probar haciendo el viejo truco de abrir la bandeja de la grabadora de DVD con

Y luego la cerramos con

Para apagar el equipo:

Eso nos cerrará la conexión. Si queremos salir de SSH sin apagar el equipo:

Y luego confirmamos para que se cierre la sesión.

ConnectBot guardará los datos de conexión a excepción de la contraseña para próximas sesiones.

Conclusiones

Como pudieron ver, es bastante sencillo configurar el servidor SSH y aún más instalar un cliente en un dispositivo móvil. Controlar la PC de forma remota puede ser más práctico en ambientes de servidores que en hogareños. Sin embargo, es de esta manera como más se aprende acerca del sistema operativo. La CLI (Command Line Interface) obliga al usuario a conocer a fondo los comandos del sistema para realizar las tareas. Solo es cuestión de ponerse una meta, como por ejemplo intentar abrir el reproductor de música de la PC desde el teléfono móvil.

En siguientes artículos voy a meterme más a fondo con la administración remota y voy a mostrarles algunos tips que fui aprendiendo con el tiempo.

¡Hasta la próxima!

Soy programador web y me desempeño como Líder Técnico y de Proyectos en Polar Bear Development. Trabajo con tecnologías como PHP, Javascript, MySQL y HTML5 para el desarrollo de sitios y sistemas web. Me especializo en Zend Framework 2 y otros frameworks MVC, como también en WordPress y otros CMS. Lidero equipos de desarrolladores trabajando con Scrum. Vivo en Buenos Aires, Argentina.
 

4 thoughts on “Controlar GNU/Linux desde Android vía SSH

  1. hola! esto es justo lo que estaba buscando, pero lamentablemente no lo pude hacer funcionar, no hice mas ni menos de lo que sugerís, sin embargo se me presenta un mensaje justo después de ingresar nombre_de_usuario@ip_del_host:puerto_ssh : “La maquina ha sido desconectada. ¿desea cerrar sesión?
    Sabés porque puede pasar esto?
    gracias!

  2. Damián

    Ese error me suele dar cuando el router me cambia la IP de mi máquina servidor. Volvé a chequear la IP de tu PC, si tenés una red configurada con DHCP, puede que la IP de la PC que estás probando cambie.
    Otra cosa útil para hacer es que chequees hacer un SSH desde tu misma PC. El comando es:
    ssh USUARIO@IP_DEL_HOST -pNRO_DE_PUERTO
    Si te lográs conectar podés descartar problemas de configuración del servidor SSH.

    Saludos.

  3. Buen tutorial! Justo estaba leyendo al respecto y este tuto completó el de otro sitio, que daba por sentado varios aspectos que los novatos no conocemos (todavía je!)

    Ahora, no coincido en que resaltes la distro ubunto, ya que en mi caso lo hice en Debian. Es decir, que no sólo es para “Instalar y configurar servidor SSH en Ubuntu”. Sé que las diferencias no son abismales entre una y otra pero me pareció correcto aclararlo.

    Por último, cuando decís (…) “intentar abrir el reproductor de música de la PC desde el teléfono móvil”, fue lo primero que se me cruzó je! MOC al toque.

    Un saludo

  4. Claudio

    Qué bueno que te haya servido. Hago referencia a Ubuntu porque lo probé en esa distribución. Si bien Ubuntu está derivado de Debian pueden llegar a aparecer algunas diferencias. Más allá de que compartan el mismo sistema de administración de paquetes, me tengo que basar en lo que estoy seguro para escribir el artículo.
    Y por otro lado, sí, justamente lo bueno de este sistema es que se puede convertir el dispositivo móvil en un control remoto.

    Muchas gracias por tu comentario.
    Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*