Photo by Jainath Ponnala on Unsplash
Programación remota con Raspberry Pi
Configura Raspberry Pi y programa con Visual Studio Code
Las minicomputadoras de la serie Raspberry Pi, en sus diferentes modelos, permiten acceder a una computadora de bajo costo. Además, a través de los pines GPIO, es posible interactuar con dispositivos de hardware similares a un microcontrolador.
Siendo Raspberry Pi una computadora, podemos utilizarlo como un servidor y acceder de forma remota a través del protocolo SSH. También podemos programarlo usando Visual Studio Code.
En este post, explicaré cómo configurar un PC con Ubuntu y VSCode, conectado a través de una red Wi-Fi, para autenticarnos en un Raspberry Pi y programarlo de forma remota utilizando el protocolo SSH.
¿Qué es SSH (Secure Shell)?
SSH es el nombre de un protocolo y el programa que lo implementa.
Permite iniciar sesión de forma segura y remota a través de una red.
Principalmente usado en servidores para una administración remota.
Pertenece a la capa de aplicación de los modelos OSI y TCP/IP.
De forma estándar usa el puerto 22.
Considerado el reemplazo de Telnet.
Funcionamiento de llaves públicas y privadas
Configurar RPi
Para configurar el Raspberry Pi, primero debemos habilitar el servidor SSH. Luego, crearemos un nuevo usuario con su respectiva contraseña y lo añadiremos a los grupos gpio
y sudo
.
Antes de comenzar la configuración, es importante asegurarse de tener una contraseña segura para el usuario predeterminado del Raspberry Pi. Esto se puede hacer a través de Inicio > Preferencias > Configuración de Raspberry Pi > Sistema > Cambiar clave
.
Habilitar SSH
Existen dos formas comunes de habilitar SSH en el Raspberry Pi: mediante el asistente de configuración o mediante la consola.
Mediante asistente de configuración
Inicio > Preferencias > Configuración de Raspberry Pi > Interfaces > SSH
.
Mediante consola
sudo raspi-config
Luego, seleccionar Interface Options ⏎ SSH ⏎ <Yes> ⏎
Configurar nuevo usuario
A continuación, crearemos un nuevo usuario con su respectiva contraseña y lo añadiremos a los grupos gpio
y sudo
.
Crear usuario
sudo adduser juan-remoto
juan-remoto
, puedes escoger cualquier, pero en los siguientes pasos seguire refiriendome al usuario como juan-remoto
.Observaciones:
Se solicitará la contraseña de superusuario.
Luego, se pedirá crear una contraseña para el nuevo usuario.
También se solicitará información adicional del usuario, como el nombre completo o el número de habitación🤷. Esta información puede dejarse en blanco presionando "enter".
Finalmente, se confirmará la información ingresada escribiendo "Y" y presionando "enter".
Añadir a grupos
sudo usermod -aG gpio,sudo juan-remoto
Observaciones:
El usuario será agregado al grupo
gpio
para acceder a los pines de forma remota.El usuario también será agregado al grupo
sudo
para ejecutar comandos con permisos de superusuario.
¿Cuál es mi IP?
Para conectarse de forma remota, es necesario conocer la IP del Raspberry Pi. Esto podemos hacerlo con el siguiente comando:
hostname -I
Observaciones:
En una red de área local (red doméstica), la IP podría comenzar con
192.168.x.x
.Es importante recordar esta IP, ya que será necesaria más adelante.
Configurar PC
En primer lugar, es necesario generar un par de llaves pública y privada, y añadir la llave pública al SSH Agent. Luego, copiar la llave pública en el Raspberry Pi.
Generar par de llaves SSH
ssh-keygen -t ed25519 -f ~/.ssh/rpi
Observaciones:
Usamos el algoritmo
Ed25519
, el más recomendado en la actualidad.El par de llaves se llamará
rpi
y se ubicará en~/.ssh
.El nombre puede ser modificado según sea necesario, pero en este ejemplo se utilizó
rpi
para identificarlo fácilmente.Es recomendado crear una
passphrase
, las mejores contraseñas tienen 20 caracteres entre letras mayúsculas, minúsculas, números, y al menos un caracter especial.
Añadir la llave privada a SSH Agent
ssh-add ~/.ssh/rpi
Observaciones:
Debemos respetar la dirección y el nombre con donde se generaron las llaves.
Si estableciste una
passphrase
se solicitará introducirla.
Copiar la llave pública a RPi
ssh-copy-id -i ~/.ssh/rpi.pub juan-remoto@192.168.x.x
Observaciones:
Se indica la ruta de la llave pública, entre el par de llaves creados es el que tiene la extension
pub
.También se indica el usuario, en este caso
juan-remoto
.La IP debe ser reemplazada por la IP del Raspberry Pi.
Se solicitará la contraseña del usuario
juan-remoto
que fue creado anteriormente.
Configurar VS Code
Visual Studio Code es un editor de código libre que facilita la programación en varios lenguajes. En esta ocasión, lo configuraremos para programar y controlar el GPIO de un Raspberry Pi de forma remota utilizando el protocolo SSH.
Instalar la extensión Remote - SSH
code --install-extension ms-vscode-remote.remote-ssh
Configurar la conexion SSH
Ahora crearemos el archivo de configuración utilizando cualquier editor de texto, como "nano" o "vim". En este ejemplo, utilizaremos "gedit":
gedit ~/.ssh/config
Dentro del archivo, agregaremos la siguiente configuración, reemplazando la IP y el nombre de usuario:
Host rpi-remoto
HostName 192.168.x.x
User juan-remoto
Guardar y cerrar el archivo.
Acceso desde VS Code
Abre VS Code y accede al Raspberry Pi.
Si se estableció una passphrase
al generar las llaves, será necesario introducirla.
Espera hasta que se establezca la conexión y luego puedes probar ejecutando algún comando, por ejemplo:
pinout
Obteniendo por ejemplo:
Outro
En este post, aprendimos cómo utilizar el protocolo SSH para acceder de forma remota a un Raspberry Pi utilizando Visual Studio Code.
Primero, habilitamos el servicio SSH en el Raspberry Pi y creamos un nuevo usuario con los permisos necesarios.
Después, generamos un par de llaves SSH y copiamos la llave pública en el Raspberry Pi para establecer una conexión segura.
Finalmente, configuramos Visual Studio Code para conectarnos al Raspberry Pi y utilizarlo de forma remota.
De esta manera, podemos programar un Raspberry Pi de forma remota para proyectos avanzados y ambiciosos. Además, con el protocolo SSH, podemos acceder de forma segura desde cualquier parte del mundo.
Espero que este post haya sido útil y que te haya ayudado a empezar a trabajar con la Raspberry Pi y Visual Studio Code.
Enlaces
https://code.visualstudio.com/docs/remote/ssh
https://www.raspberrypi.com/documentation/computers/remote-access.html