generando y utilizando claves de ssh

Imagen de Epe

No sé si te ha pasado, pero con nosotros es frecuente. Tenemos muchos servidores que mantener y se nos olvidaban las claves (vamos,esto es exagerado pero a veces nos pasaba). Lo peor de todo es que teníamos que escribir continuamente las claves de root para entrar a nuestros servidores.

Hasta que un día me cansé y me puse a investigar. Utilizar un sistema de autenticación de clave pública/privada para el ssh.

EL objetivo es el siguiente:
1- genero una clave privada que se quedará en mi máquina de escritorio
2- genero una clave pública que pondré en cada servidor al que necesito entrar
3- copio esta clave publica al servidor remoto.

Hagamoslo por paso:
Paso 1 y 2 se realizan en la máquina de escritorio mía, en la que sería el cliente de ssh:

ssh-keygen -t dsa

El anterior comando me pedirá una serie de información, sencillamente daré enter a cada pregunta que me realice.

al finalizar, puedo verificar que en mi directorio .ssh tengo dos archivos: id_dsa (mi clave privada) e id_dsa.pub (la publica).


ls -la ~/.ssh
total 44
drwx------ 2 eperez eperez 4096 Jun 16 17:16 .
drwx------ 75 eperez eperez 4096 Jun 24 10:49 ..
-rw------- 1 eperez eperez 668 Feb 5 22:01 id_dsa
-rw------- 1 eperez eperez 615 Feb 5 22:01 id_dsa.pub

La clave privada, no se la des a nadie!!

Ahora, al servidor al que nos queremos conectar le copiamos la clave publica pero con el nombre authorized_keys2 :


ssh 1.2.3.4 "mkdir ~/.ssh"
ssh 1.2.3.4 "chmod 600 ~/.ssh"
cat .ssh/id_dsa.pub | ssh 1.2.3.4 "cat - >> .ssh/authorized_keys2"

Los dos primeros comandos pueden fallar si ya existe .ssh en el servidor remoto, no te preocupes.

Por qué uso >> ? porque este archivo puede contener varias claves publicas (en nuestro caso cada administrador tiene la suya).

Una vez hayas ejecutado estos comandos, puedes entrar libremente al servidor sin tener que teclear la clave pues usará autenticación de clave publica/privada:


ssh 1.2.3.4

Si te pidiera clave en este ultimo paso, vuelve a verificar todo, el error más común es que escriben mal el nombre de authorized_keys2