Conectar a servidor SSH sin contraseña

Para los que trabajamos continuamente con varios servidores SSH, puede llegar a ser algo extresante tener que escribir siempre la contraseña. Y si además tienes que memorizar varias contraseñas de diferentes servicios, servidores, etc, como es mi caso, puede darse el caso de que cueste recordarlas.

En cualquier caso, por un motivo u otro, puede que cualquier programador o administrador de sistemas prefiera poder conectarse a su servidor SSH sin necesidad de escribir continuamente la contraseña, pero, ¿como hacer esto sin vulnerar la seguridad del servidor?.

La respuesta está en las claves RSA y el fichero authorized_keys de SSH. La cuestión es crear una clave rsa, que almacenaremos en el servidor al que deseamos conectar. A continuación explico los pasos para realizar el procedimiento.

1. Creamos la clave RSA
Para empezar, debemos crear en nuestro cliente la una clave rsa para identificar la máquina. Abriremos una ventana de terminal y ejecutaremos la siguiente sentencia:

ssh-keygen -t rsa
Nos pedirá una contraseña común, que podremos utilizar en caso de querer utilizar esta misma para conectar a diferentes servidores (en caso de que lo subamos a varias máquinas). Es una medida de seguridad más, aunque yo siempre dejo este campo vacío.

Una vez ejecutada la esta sentencia, se creará automáticamente en la carpeta .ssh de nuestro usuario ($HOME/.ssh) un fichero id_rsa.pub que utilizaremos para conectar a nuestros servidores.

2. Enviar la clave al servidor/es
El siguiente paso es enviar la clave al servidor. Con un sencillo comando que nos pedirá la contraseña, ya conseguiremos hacerlo:
ssh-copy-id -i ~/.ssh/id_rsa.pub $USER@$HOST
Donde $USER es el usuario con el que conectamos al servidor y $HOST la dirección. Con esto ya estaremos listos para conectar al servidor sin necesidad de introducir la contraseña.


CONFIGURACIÓN ADICIONAL
Para los más maniáticos, o aquellos que quieran añadir un nivel más de seguridad al servidor, se puede añadir la opción de que no se pueda conectar al servidor SSH si el equipo no está en el archivo authorized_keys del servidor. Es decir, que solo aquellos que han realizado el paso anterior puedan conectarse.

Para ello se debe editar el fichero /etc/ssh/ssh_config del servidor y añadir las siguientes lineas de configuración:
PasswordAuthentication no
RSAAuthentication yes
PubkeyAuthentication yes
Reiniciamos el servidor:
sudo /etc/init.d/ssh restart
Y probamos de conectaros mirando los mensajes de conexión (para comprobar que funciona correctamente):
ssh -v $USER@$HOST
Para realizar esta configuración en varios servidores, basta repetir solo el paso 2 en cada uno de los servidores, ya que la clave RSA será única para el cliente.

0 comentarios:

Publicar un comentario