Programación remota con Raspberry Pi

Configura Raspberry Pi y programa con Visual Studio Code

·

5 min read

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
Para nuestro ejemplo el nuevo usuario se llamará 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
Instalaremos la extension mediante un comando, pero sientete libre de instalarlo directamente en VSCode.

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.

💡
La IP del Raspberry Pi puede cambiar si el router se reinicia o por cualquier otro motivo. Si esto ocurre, será necesario actualizar la IP en este 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

https://www.ssh.com/academy/ssh/keygen

https://es.wikipedia.org/wiki/Secure_Shell