Continuando con los tutoriales de Raspberry Pi en esta ocasión nos toca ver SSH, una herramienta imprescindible que nos permitirá controlar nuestra Raspberry Pi de forma remota.
En muchas ocasiones no vamos a tener nuestra Raspberry Pi conectada a un monitor y un teclado, si no que la tendremos dedicada a otras funciones como un servidor web o un broker para IoT. O incluso teniendo monitor y ratón, en muchas ocasiones vamos a querer controlarla de forma remota.
Las formas habituales de conectarnos de forma remota son SSH y VNC (que veremos en la siguiente entrada). SSH es la más empleada, por ser rápida y segura. Es una herramienta habitual en ordenadores basados en Unix, como Linux y Mac. Por tanto, familiarizarnos con su uso es casi imprescindible.
SSH son la siglas de Secure Shell (antes conocido como Secure Socket Shell) y, básicamente, nos permite iniciar una consola de comandos en un ordenador remoto de forma sencilla y segura.
Funciona de forma similar a Telnet pero añade el cifrado de la comunicación, de forma que los paquetes enviados por el cliente o el servidor no pueden ser descifrados en caso de ser interceptados.
SSH sigue un modelo cliente-servidor. El cliente inicia una petición al servidor, que autentifica la comunicación e inicia el entorno Shell. Múltiples clientes pueden conectarse a un mismo servidor.
Por defecto SSH emplea el puerto TCP 22 aunque puede cambiarse fácilmente. Se emplea criptografía pública RSA en ambas conexiones. El cifrado incluye algoritmos Blowfish, DES, e IDEA, siendo este el predeterminado.
SSH dispone de más usos muy interesantes. por ejemplo, podemos copiar archivos de forma segura entre dos dispositivos, o tunelizar cualquier conexión de otra aplicación a través de un canal seguro SSH. Veremos estos usos en próximas entradas.
Configurar SSH en Raspberry Pi
Para podernos conectar a nuestra Raspberry Pi, esta va a funcionar como servidor. Antes de poder conectarnos tenemos que activar la opción en la configuración ya que, por seguridad, el servidor SSH viene desactivado en Raspbian.
Para activar el servidor SSH en la configuración de Raspberry Pi, revisar la entrada sobre configurar Raspberry Pi.
Por otro lado, debemos saber la ‘dirección’ de la Raspberry Pi a la que queremos conectarnos. Aunque, en teoría, podemos resolver la dirección con el nombre del equipo, la resolución de nombres es un proceso… algo inestable.
Por tanto, si queremos una conexión fiable resulta muy conveniente que la Raspberry Pi tenga asignada una IP estática, como vimos en esta entrada.
Esta conexión, en principio, sólo funcionará en vuestra red local. Para poder acceder desde fuera, a través de Internet, deberéis configurar un mapeo de puertos en el router. El proceso completo depende de vuestro router, así que tendréis que consultar la documentación de vuestro modelo.
Conectarse por SSH a Raspberry Pi
Si está usando Linux o Mac entonces usar SSH es muy simple, ya que el terminal de Linux incluye soporte nativo para conexiones SSH. En Windows deberemos descargar un cliente como Putty. Veremos a continuación ambos procesos.
Conexión SSH desde Linux
Para conectarnos como cliente a una Raspberry Pi simplemente abrimos la consola de terminal y ejecutamos el siguiente comando:
ssh user@host
Donde ‘user’ es el nombre del usuario en el Raspberry Pi servidor y ‘host’ es la dirección IP o el nombre del equipo al que nos queremos conectar.
Por ejemplo, si tenemos el usuario por defecto de Raspberry Pi y le hemos configurado una IP estática 192.168.1.10
ssh pi@192.168.1.10
Veremos que nos aparece un mensaje de advertencia indicándonos que estamos usando el usuario por defecto. Tened en cuenta que el usuario y contraseña por defecto de Raspberry Pi es por todos conocido, y estamos poniéndoselo muy fácil a ‘los malos’ para que entren en nuestro sistema.
Es un grave riesgo exponer una Raspberry Pi en Internet con SSH activado y el usuario por defecto.
Este es el motivo por el que viene desactivado la opción de SSH por defecto. SSH es una herramienta potente y que venga activado por defecto era un riesgo, sobre todo para los usuarios noveles.
La solución es tan sencilla como crear nuestro propio usuario y eliminar el por defecto, una medida de seguridad básica que deberíamos hacer en todo caso. Lo veremos en una próxima entrada de gestión de usuarios.
Conexión SSH desde Windows
Si utilizamos Windows deberemos emplear un cliente SSH para conectarnos con Raspberry Pi. El cliente más utilizado en Windows es Putty, que es Open Source y está disponible en https://www.putty.org/.
Putty es un programa muy útil y sencillo de usar, y es una herramienta que tiene más usos que realizar conexiones SSH. Por ejemplo, también puede realizar conexiones Serial.
Descargamos y ejecutamos Putty y nos aparece una ventana donde podemos introducir la dirección IP (o el nombre) de la Raspberry Pi. Al conectarnos se nos preguntará el nombre del usuario y la contraseña.
Tras el login, tenemos una ventana de comandos similar a la que obtenemos en Linux o Mac. Opcionalmente podemos guardar la conexión poniéndole un nombre. Así podemos tener almacenadas las conexiones a varios servidores, y acceder cómodamente.
Así de fácil es realizar una conexión SSH, una herramienta casi imprescindible para trabajar con Raspberry Pi (en realidad, con cualquier servidor con Linux).
En la próxima entrada veremos cómo establecer un escritorio remoto con VNC, otra forma de acceder de forma remota a Raspberry Pi.