Hace unos días publicamos una guía básica sobre SSH. Allí explicamos distintos tipos de túneles, pero nos quedo pendiente la generación de certificados y conexión sin passwords a hosts remotos. Como lo prometido es deuda, hoy lo saldamos.
El proceso es muy sencillo: primero ingresamos el siguiente comando en la consola
ssh-keygen -t rsa -b 4096 -C "USER@YOUR_EMAIL"
Se nos a consultar sobre la ubicación donde almacenar los certificados y contraseña del certificado (opcional pero recomendado). Van a ver una salida similar a esta
Generating public/private rsa key pair.
Enter file in which to save the key (/home/your_user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/your_user/.ssh/id_rsa.
Your public key has been saved in /home/your_user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AlEIestv8y9vR+4gwC9D5kZBicUK4/BTDjfeFkBnt1o USER@YOUR_EMAIL
The key's randomart image is:
+---[RSA 4096]----+
| .**=+ . |
|+.o.B+.. . |
|++.Boo .E |
| ++ooooo |
| o.*.o S |
| * o . . |
| O o .o |
| o =....o |
| .=oo. |
+----[SHA256]-----+
Finalmente, para enviar el certificado público al host remoto con el comando
ssh-copy-id <user>@<remote>
Ingresan la contraseña del host remoto y de aquí en adelante ya estamos listo para conectarnos sin necesidad de ingresar nuevamente el password.