SSH
y autentificación mediante clave pública/privada
Para dar
un poco más de seguridad y comodidad al acceso por SSH a nuestros servidores, hemos
decidido utilizar autentificación mediante clave pública/privada junto a SSH.
El esquema es el siguiente: un
servidor SSH posee una lista de claves públicas cada una asociada a un usuario.
Cuando uno de dichos usuarios trata de conectarse al servidor SSH, el servidor
comprueba que efectivamente el cliente es quién dice ser mediante un algoritmo
de clave privada/pública, de manera que solo el cliente legítimo que posea la
correspondiente clave privada podrá autentificarse.
Así, para ponerlo en marcha es
necesario generar un par de claves (privada y pública) en el cliente, y enviar
la clave pública al servidor.
Por otro lado el cliente
almacena la clave pública del servidor, de manera que cuando el cliente se
conecta al servidor puede comprobar que el servidor es efectivamente quién dice
ser.
A ello:
La generación de la pareja de
claves en el cliente se realiza mediante el comando ssh-keygen:
$
ssh-keygen -t rsa
Generating
public/private rsa key pair.
Enter
file in which to save the key (/home/NaSz/.ssh/id_rsa):
Enter
passphrase (empty for no passphrase):
Enter
same passphrase again:
Your
identification has been saved in /home/NaSz/.ssh/id_rsa.
Your
public key has been saved in /home/NaSz/.ssh/id_rsa.pub.
The
key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
jcarlos@c-one
Es posible
proteger el uso de las llaves mediante una clave, de manera
que cuando se
vayan a usar ésta sea solicitada. Si se deja en blanco no
se pide
contraseña.
Las claves se
almacenan por defecto en ~/.ssh/, quedando el directorio así:
$ ls -l
total 12
-rw------- 1 jcarlos jcarlos 883 2005-08-13 14:16 id_rsa
-rw-r--r-- 1 jcarlos jcarlos 223 2005-08-13 14:16 id_rsa.pub
-rw-r--r-- 1 jcarlos jcarlos 1344 2005-08-04 02:14
known_hosts
id_rsa es la
clave privada,
id_rsa.pub es la clave pública, y
known_hosts son las claves
públicas de los
servidores conocidos.
Ahora se debe
copiar la clave pública al servidor, al fichero ~/.ssh/authorized_keys.
Para ello se
utiliza el comando ssh-copy-id
$ssh-copy-id
-i ~/.ssh/id_rsa.pub jcarlos@c-one
$ssh-copy-id
-i ~/.ssh/id_rsa.pub jcarlos@c-one
ssh-copy-id es un script que se conecta al
servidor ssh indicado mediante ssh,
hace login y
copia el archivo indicado por la opción -i en el fichero ~/.ssh/authorized_keys,
además de
tocar los permisos para dar seguridad (como impedir el acceso a miembros del
grupo).
La primera vez
que tratemos de conectar al servidor mediante ssh se nos
pedira que
confirmemos la clave pública del mismo (como hemos dicho, el
cliente guarda
también una copia de la clave pública del servidor para
comprobar que
efectivamente es el servidor que el cliente busca),
de manera que
ésta queda guardada, normalmente, en ~/.ssh/known_hosts
No hay comentarios:
Publicar un comentario