- 2026, mié 22 abril
- Laboratorio
- @fotosycaptura
- #laboratorio, #linux, #raspberrypi, #software
En ocasiones, estás buscando una manera en la que quieres conectarte a una raspberry, o digamos un servidor mediante ssh pero sin usar usuario y contraseña, y dices un certificado... En realidad, es una conexión mediante una combinación entre llaves públicas y privadas, mal llamado a veces certificado... Pasa a ver cómo es que se configura todo esto en tu servidor...
Vamos por parte.
¿Es recomendable?
Por supuesto que sí, es mucho más recomendable que usuario + contraseña si se configura correctamente.
¿Cómo funciona?
Una conexión mediante SSH con claves usa criptografía asimétrica:
- Clave privada → se queda en tu PC (NUNCA se comparte).
- Clave pública → se copia a la Raspberry Pi, o a un servidor.
Cuando te conectas:
- Tu cliente SSH demuestra que tiene la clave privada.
- El servidor valida con la pública.
- No necesitas contraseña.
Es como una cerradura (Raspberry) que acepta solo llaves específicas (tu clave privada), sin pedir PIN ni nada más...
Me gusta, ¿Cómo procedo?
En tu equipo - que obviamente tendrás Linux -, harás lo siguiente desde una terminal:
ssh-keygen -t ed25519 -C "tu_email@ejemplo.com"
Luego sigue las instrucciones, que en general sería un siguiente, siguiente XD, osea, anda dando Enter a todo, eventualmente te pedirá una contraseña, no olvides lo que coloques porque lo usarás...
Una vez completado estos pasos, generarás:
~/.ssh/id_ed25519 → privada
~/.ssh/id_ed25519.pub → pública
Copiar la clave pública a la Raspberry Pi
La manera más fácil para esto es usar el siguiente comando desde la terminal:
ssh-copy-id usuario@IP_RASPBERRY
Por ejemplo:
ssh-copy-id pi@192.168.1.50
Luego de ello, te pedirá la contraseña una última vez, al menos en teoría, pero es mejor que no olvides la contraseña... Luego de ello, lo que hará sin que tú hagas nada será agregarlo a ~/.ssh/authorized_keys en tu Raspberry.
¿Me puedo conectar sin clave ahora?
Sí, simplemente podrías ejecutar por ejemplo:
ssh pi@192.168.1.50
Si los pasos fueron realizados correctamente, ya no te pedirá contraseña.
Pero la Raspberry sigue preguntando usuario y clave y si...
Sí, tanto como si agregas una Passphrase1 con la llave, o si escribes usuario y contraseña y luego ingresas, sí... Pero eso se puede desactivar... Para ello tendrías que editar:
sudo emacs /etc/ssh/sshd_config
Bueno, puedes usar emacs, vim, nano, lo que sea de tu gusto...
Busca y modifica lo siguiente por lo que te dejo a continuación:
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
PermitRootLogin no
Por último, reinicia el servicio mediante:
sudo systemctl restart ssh
Ya, muy bonito, ¿Pero, me ayuda en algo?
Sí, principalmente la comodidad de no escribir contraseñas XD a cada rato, pero también aporta seguridad ya que evitarás ataques de fuerza bruta, es mucho más seguro que una contraseña tradicional, y si eres más que un usuario, puedes automatizar labores de respaldos por ejemplo...
El único riesgo importante es que, si alguien te roba tu llave clave privada, tendrá acceso total al equipo. Así que deberías de resguardarla bien, por ejemplo cifrando el disco, pero eso sería para otra ocasión... También, ten en cuenta que a diferencia de [GPG], estas llaves no expiran, así que estarán vigentes siempre.
Si colocaste una passphrase, mitigarás esto, pero te la estará pidiendo en ciertos momentos, pero para no tener que escribirla cada vez, en la terminal mientras la mantengas iniciada puedes usar:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Eso es todo...
Si hacemos una tabla comparativa, podría resumirte lo siguiente en materia de Ciberseguridad:
| Método | Seguridad | Automatización | Riesgo |
|--------------------------|-----------|----------------|---------------|
| Usuario + contraseña | Baja | Mala | Fuerza bruta |
| SSH con claves | Alta | Excelente | Robo de clave |
| SSH + clave + passphrase | Muy alta | Buena | Mínimo |
Además, siempre puedes realizar cambios de puertos para evitar usar lo estándar, si eres más paranóico, puedes limitar el acceso mencionando al o a los usuarios mediante
AllowUsers pi
Aunque, en ese caso, también recomendaría el uso de fail2ban.
Referencias
- Secure Shell - Wikipedia, la enciclopedia libre, https://es.wikipedia.org/wiki/Secure_Shell
-
También se le dice frase de contraseña ↩