domingo, 2 de noviembre de 2008

Acceso SSH con Claves

SSH es un protocolo para establecer conexiones de shell seguras a servidores remotos, son seguras por que la comunicación entre el cliente y el servidor viaja encriptada mediante el protocolo SSL. Al iniciar un sesión SSH se debe ingresar la contraseña de la cuenta del usuario en el servidor remoto al que vamos a acceder, existe un mecanismo para evitar tener que ingresar la contraseña cada vez que accedemos al servidor y es mediante la utilización de claves publicas y privadas.

La idea es general un par de claves, una privada y una publica, en nuestra maquina cliente. La clave privada queda en nuestra maquina y la publica se envía a el servidor remoto, cuando deseamos acceder al servidor remoto, el SSH verifica la existencia de las claves y controla que ambas sean el par de claves generadas, en caso de éxito permite el acceso al servidor remoto sin tener que ingresar la contraseña, en caso de fallo no permite el acceso al servidor.
Veamos como es el proceso para generar el par de claves y enviarlas al servidor. Primero, desde una consola, utilizamos el comando ssh-keygen.

$ssh-keygen -t dsa

Les aparecerán unas preguntas, la primera es en donde guardaran las claves, el lugar por defecto es su home dentro de la carpeta .ssh/.
La segunda pregunta es la contraseña para proteger la clave privada. Al final les aparecerá un mensaje con la operación realizada.

Generating public/private dsa key pair.
Enter file in which to save the key (/home//.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home//.ssh/id_dsa.
Your public key has been saved in /home//.ssh/id_dsa.pub.
The key fingerprint is:
a1:b8:muchos numeros wacacca:74:80 @

Una vez terminada la operación tendremos el par de claves, por último solo queda enviar la clave publica a nuestro servidor, puede hacerse con el comando scp o mediante la utilidad ssh-copy-id.

Con scp podemos hacer lo siguiente:

scp .ssh/id_dsa.pub @serverremoto.com.ar:/home//.ssh/authorized_keys

Y con ssh-copy-id sería


ssh-copy-id -i .ssh/id_dsa.pub @suserverremoto.com.ar

Con eso la próxima vez que ingresemos al server se nos pedirá la contraseña con la que protegimos la clave privada y dicha contraseña quedara en toda la sesión de la maquina cliente, por ende no pedirá la contraseña para ingresar al servidor remoto durante la sesión. En caso que esto les moleste pueden dejar la clave privada sin proteger, es decir no ingresen una contraseña al generar el par de claves.

Algunos enlaces

http://www.marcelor.com/2008/02/conexion-con-ssh-sin-contrasena-en-ubuntu.html

http://no-names.biz/es/2008/05/30/howto-use-ssh-key/

No hay comentarios: