lunes, 15 de septiembre de 2008

SSH: llave privada y pública

En el lado del cliente, en primer lugar tenemos que generar nuestras llaves: la pública, que es la que podemos compartir y la privada, que sólo debemos tener nosotros.
Ejecutamos el comando ssh-keygen :
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): (1)
Enter passphrase (empty for no passphrase): (2)
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
eb:1f:e7:30:9b:1c:f8:4b:b1:2f:3b:2b:4e:ab:4b:db

En el paso (1) se nos pedirá la ruta donde se almacenarán las llaves, por defecto será en ~/.ssh/id_rsa (privada) y en ~/.ssh/id_rsa.pub la llave publica. En principio dejaremos que se generen en las rutas por defecto.
En el paso (2) y (3) se pide si queremos introducir una "frase de paso". Esto significa que cada vez que se vaya a usar la llave, se nos pedirá esta contraseña. Es recomendable introducir una frase de paso, para asegurar que sólo nosotros podemos usar la llave privada, y por ejemplo aunque perdamos el ordenador o alguien consigua nuestra llave privada, no pueda usarla. Es recomendable usar una contraseña fuerte(carácteres extraños y sobre todo longitud),dado que podrían reventarla por fuerza bruta (existen programas para ello).

En el lado del servidor, presuponiendo que tenemos el servidor ssh correctamente instalado (ver algunos consejos aqui). Supondremo que nos vamos a conectar a usario@miservidorssh
1) En el servidor pondremos los permisos adecuados:
$ chmod 700 $HOME/.ssh
$ chmod 600 $HOME/.ssh/authorized_keys

2)En el servidor, para autorizar a un cliente para que se conecte con ssh, copiaremos la llave publica que nos facilitará el cliente en el archivo $HOME/.ssh/authorized_keys del servidor:
a)Si tenemos acceso al servidor con ssh (usando el password de usuario ):
ssh usario@miservidorssh 'cat $HOME/.ssh/id_dsa.pub >> .ssh/authorized_keys'
b)Si solo hay acceso físico: cat id_dsa.pub >> .ssh/authorized_keys
c)Si no tenemos acceso, facilitaremos el archivo con la llave publica ( id_dsa.pub) al "root" del servidor para que nos la coloque él en su sitio.

Como se puede ver usamos cat archivo_con_llave publica >> . Donde >> indica que se insertará al final del archivo.

Si en el servidor queremos que únicamente se autentiquen usuarios mediante llaves publica/privada en el archivo /etc/ssh/sshd_config buscaremos la opcíón PasswordAuthentication y la pondremos en no:
PasswordAuthentication no

No hay comentarios: