Muchas veces, para automatizar tareas y scripts, necesitamos conectarnos a máquinas remotas a través de ssh y/ó scp y que la máquina remota no nos pida contraseña. SSH ofrece un método para solucionar este problema de una forma rápida y segura.
⬇️ Compra en Amazon el hardware que utilizo ⬇️
- 💻 Ordenador Portátil: Descúbrelo aquí
- 🖥️🖥️ Monitores: Mis 2 súper monitores
- ⌨️ Teclado: Mini teclado + Lector DNIe
- 🖱️ Ratón: Mi ratón programable
- 🎧 Auriculares: Súper Auriculares TOP!
- 🖨️ Impresora: Mi fantástica impresora
- 🗄️ NAS Backup: Mi NAS para Backups
- 🔌 HUB USB: Mi HUB para puertos USB
- 📱 Smartphone: Mi Smartphone
- 📲 Tablet: Mi tablet para viajes
- ⌚ Smartwatch: Mi Smartwatch favorito
- 📹 Cámara deportiva: Mi cámara para deportes
Esta forma de conexión utiliza las llaves públicas y privadas para establecer una comunicación entre máquina cliente y máquina destino sin necesidad de introducir la contraseña.
A continuación os explicaré brevemente y de forma muy sencilla, cómo generar las llaves ssh y cómo configurar tanto el servidor como el cliente para lograr nuestro objetivo.
El equipo cliente será el que genera la conexión y el equipo servidor quien recibe la petición de conexión SSH.
1.- EQUIPO CLIENTE
Primero debemos generar nuestra llave pública y privada si no las hemos creadas previamente. La creación de las llaves se hará con el siguiente comando y usaré el usuario "key" para el tutorial:
key@cliente:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/key/.ssh/id_rsa):
Created directory '/home/key/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/key/.ssh/id_rsa.
Your public key has been saved in /home/key/.ssh/id_rsa.pub.
The key fingerprint is: 3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 key@cliente
Una vez finalizado el proceso, las llaves se almacenan en nuestro home dentro del directorio: /home/$USER/.ssh/
La llave pública (id_rsa.pub) será la que copiemos a aquellos servidores a los cuales queramos acceder sin contraseña, y la llave privada nunca debemos proporcionarla a nadie.
Lo que haremos será añadir el contenido de nuestra llave al fichero authorized_keys en el servidor al cual queremos acceder remotamente, concretamemte en el fichero /home/$USER/.ssh/authorized_keys
Podemos hacerlo de forma manual y copiarlo con SCP y luego hacer un cat llave_publica >> authorized.keys. Os pongo el comando con el cual podemos añadir desde la máquina cliente la llave SSH al fichero autorized_keys en el servidor con un solo comando.
2.- EQUIPO SERVIDOR
Copiamos nuestra llave pública desde el cliente al servidor:
key@cliente:~> cat ~/.ssh/id_rsa.pub | ssh key@servidor 'cat >> ~/.ssh/authorized_keys'
Debemos asegurarnos de los permisos de los ficheros/directorios:
- Cambiar los permisos del directorio .ssh a 700 ( chmod 700 .ssh )
- Cambiar los permisos de authorized_keys a 600 ( chmod 600 authorized_keys)
3.- PROBANDO LA CONEXIÓN
Para probar la conexión, solamente debemos hacer una conexión ssh desde nuestro cliente al servidor y veremos como no nos pide ninguna password:
key@cliente:~> ssh key@servidor
key@servidor:~>
ENJOY!