Configuración de claves SSH en la Raspberry Pi

Configurar claves SSH en una Raspberry Pi es relativamente fácil y puede hacer que conectarse a una a través de una red sea más conveniente. En este tutorial, explicaremos cómo crear y configurar claves SSH para que pueda conectarse a un Pi de forma remota sin necesidad de ingresar una contraseña.

Para ayudar a que el proceso sea más claro, supondré que tiene dos máquinas. Una es la máquina remota a la que desea acceder. Esta es la Raspberry Pi y la llamaremos [A]. La otra máquina es la computadora que usará en el futuro para acceder al Pi. Llamaremos a esto [B]. Cada paso incluye estos marcadores en el texto para indicar en qué máquina realiza ese paso.

Las claves SSH se crean mediante «criptografía de clave pública». Este es un concepto en el que una clave pública se almacena en el dispositivo remoto (es decir, una Raspberry Pi) y el propietario utiliza una clave privada para demostrar que posee las claves. La clave pública se puede dar a todos, pero la clave privada debe mantenerse en secreto.

En la práctica, las claves son largas cadenas de caracteres almacenadas en un archivo de texto.

Para continuar con este tutorial, debe tener acceso directo al Pi con un teclado y un monitor o acceso remoto mediante SSH o VNC.

Paso 1: crear un directorio SSH y un archivo de claves_autorizadas [A]

Para comenzar, navegue hasta el directorio de inicio:

cd ~

y cree un nuevo directorio llamado «.ssh» (tenga en cuenta el carácter .):

mkdir .ssh

Navegue al nuevo directorio:

cd .ssh

y cree un archivo vacío «authorized_keys»:

touch authorized_keys

Paso 2: Establecer permisos [A]

Los permisos en el directorio ssh deben modificarse:

chmod 700 ~/.ssh

A continuación, cambie los permisos en el archivo «authorized_keys» para que solo el usuario de Pi pueda leer y escribir:

chmod 600 ~/.ssh/authorized_keys

Paso 3: Creación de un nuevo par de claves [A]

Si desea crear un nuevo par de claves, es fácil hacerlo con la utilidad ssh-keygen.

Navegue al directorio SSH:

cd ~/.ssh

luego ejecute la utilidad ssh-keygen:

ssh-keygen

Se le pedirá una ubicación para guardar el archivo clave. Pulse ENTER para aceptar el valor predeterminado.

Se le pedirá una frase de contraseña. Esto es opcional. Si usa una frase de contraseña, es posible que se le solicite cuando use la clave. Es un paso extra de seguridad y tendrás que decidir si quieres hacer uso de él. Escriba una frase de contraseña o déjela en blanco y presione ENTER para terminar.

Si usa una frase de contraseña, ¡no la olvide!

Este proceso debería crear dos archivos para usted. Una clave pública denominada «id_rsa.pub» y una clave privada correspondiente denominada «id_rsa».

Agregue el contenido de la clave pública al archivo authorized_keys usando:

cat id_rsa.pub >> authorized_keys

Algunos clientes prefieren las teclas de estilo PuTTY. Recomendaría crear este formato ahora para que pueda elegir en el futuro. Los siguientes comandos instalarán puttygen y crearán una versión PuTTY de su nueva clave:

sudo apt-get install putty-tools

luego :

puttygen id_rsa -o id_rsa.ppk

Paso 4: copie los archivos clave en su máquina local

Ahora debería tener tres archivos:

  • id_rsa
  • id_rsa.pub
  • id_rsa.ppk

Copie estos archivos desde el Pi [A] a un lugar seguro. Puede hacer esto usando FileZilla en su máquina local [B] para copiar los archivos en su red.

El cliente requiere la clave privada (id_rsa o id_rsa.ppk) [B] usas para conectarte a la Pi. Esto podría ser una PC, una computadora portátil o un teléfono móvil. La clave pública (id_rsa) es utilizada por Pi [A] desea conectarse.

Puede usar la misma clave pública en varios dispositivos siempre que tenga la clave privada que coincida. Por lo tanto, todos sus Pis podrían usar la misma clave pública y solo necesitaría una clave privada para acceder a todos.

Una vez que haya almacenado las claves de forma segura en otro lugar, se pueden eliminar del Pi [A] usando los siguientes comandos:

rm id_rsa rm id_rsa.pub rm id_rsa.ppk

Paso 5: agregar una clave existente [A]

Si ya tiene un par de claves pública/privada, puede agregar la clave pública al archivo «authorized_keys». Siga los pasos 1 y 2 para configurar el archivo «authorized_keys».

Tiene dos métodos para poner los detalles de la clave pública en el archivo de claves.

El primer método es editar el archivo de claves directamente:

nano authorized_keys

y pegue el contenido del archivo de clave pública (por ejemplo, id_rsa.pub) en el editor. Use CTRL-X, Y y ENTER para guardar los cambios y volver a la línea de comando.

El segundo método es copiar el archivo de clave pública (por ejemplo, id_rsa.pub) en el directorio .ssh. Podrías usar FileZilla para hacer esto. Luego use el siguiente comando para agregarlo al archivo de claves:

cd ~/.ssh cat id_rsa.pub >> authorized_keys

donde “id_rsa.pub” es su archivo de clave pública.

Una vez que se haya actualizado el archivo authorized_keys, puede eliminar el archivo id_rsa.pub:

rm id_rsa.pub

Paso 6: configurar el cliente SSH [B]

En este punto, debería poder usar su cliente SSH favorito para conectarse al Pi, pero en lugar de especificar una contraseña, puede apuntar a la clave privada. El proceso exacto para hacer esto dependerá del cliente utilizado.

Como ejemplo, aquí están las configuraciones de sesión en WinSCP:

Se debe especificar la dirección IP y el nombre de usuario. En «Avanzado» permite seleccionar un archivo de clave privada. WinSCP prefiere las claves de estilo Putty, pero convertirá una clave OpenSSH en un ppk con un solo clic.

Otros clientes SSH funcionan de manera similar.

Paso 7: Conectar [B]

Si está configurado correctamente, ahora se pueden hacer conexiones a la Pi sin tener que ingresar una contraseña.

Aunque muchos clientes pueden recordar contraseñas, la ventaja de las claves SSH es que puede usar el mismo archivo de claves en todos sus clientes. Si cambia el archivo clave, no tendrá que cambiar la contraseña en todos los lugares en los que pueda recordarla.

También puede almacenar la clave privada en una unidad extraíble o dentro de un contenedor cifrado (es decir, Veracrypt). Esto significa que si le roban su computadora, las conexiones a sus dispositivos no funcionarán incluso si alguien puede abrir su cliente SSH y ver sus sesiones guardadas. ¡Sin archivo de clave no hay acceso!

Opcional: convierta archivos PPK en claves privadas y públicas con puttygen

En algún momento en el futuro, es posible que deba convertir un archivo PPK de Putty en archivos de claves de estilo OpenSSH. Estos son los comandos que puede usar para convertir un PPK en claves privadas y públicas:

puttygen my_key.ppk -O private-openssh -o my_key.private  puttygen my_key.ppk -O public-openssh -o my_key.public

Puede realizar este paso en cualquier máquina que tenga los archivos ppk disponibles y tenga instalado puttygen.

Esta guía le permitirá iniciar sesión en su Pi usando claves SSH, pero el enfoque estándar de nombre de usuario/contraseña seguirá funcionando. Asegúrese de haber cambiado la contraseña predeterminada de Raspberry Pi a algo seguro. Tiendo a usar una contraseña de al menos 15 caracteres.

Es posible confiar completamente en las claves SSH y deshabilitar la capacidad de iniciar sesión con una contraseña. Sin embargo, esto está más allá del alcance de esta guía.