Configurando una llave publica
Antes que nada, e independientemente si nuestro Linux es un Debian, Red Hat, SuSe, etc, nos debemos de asegurar que OpenSSH es la aplicacion SSH instalada en el sistema cliente. La generacion de la llave varia bajo diferentes implementacion de SSH. El comando ssh -V debe de desplegar una linea conteniendo OpenSSH, seguido de otros detalles
correo:~# ssh -V OpenSSH_4.3p2 Debian-9, OpenSSL 0.9.8c 05 Sep 2006
Generacion de la Llave
El RSA key pair debe de ser generado en el sistema cliente. La parte publica de esta llave sera almacenada en los servidores a los cuales nos conectemos, mientras que la parte privada de la llave debe de guardarse en un area segura del sistema cliente, por default en ~/.ssh/id_rsa.
La generacion del par de llave se puede hacer con la utilidad ssh-keygen(1).
fher98@deathbian:~$ mkdir ~/.ssh fher98@deathbian:~$ chmod 700 ~/.ssh fher98@deathbian:~$ ssh-keygen -q -f ~/.ssh/id_rsa -t rsa Enter passphrase (empty for no passphrase): Enter same passphrase again:
No utilice como passphrase su contraseña de usuario, ni la deje en blanco. La contraseña deberia de ser al menos de 16 caracteres de longitud, y no una oracion simple. Una buena opcion es un parrafo de alguna cancion o poema, utilizando todos los simbolos gramaticales posibles. Durante la configuracion del ssh-agent reduciremos los ingresos requeridos de la contraseña, asi que les recomendamos usar un passphrase largo.
Los permisos del archivo deberan asegurarse para que otros usuarios no puedan leer los datos del key pair. Es posible que el OpenSSH no permita utilizar la autenticacion de llave publica si los permisos del archivo no estan seguros. Estos cambios deben de ser hechos en todos los sistemas involucrados.
fher98@deathbian:~$ chmod go-w ~/ fher98@deathbian:~$ chmod 700 ~/.ssh fher98@deathbian:~$ chmod go-rwx ~/.ssh/*
Distribucion de la llave
La parte publica del RSA key pair debe de copiarse a todos los servidores que seran accesados por el cliente. La informacion de la llave publica a ser copiada la puede encontrar en el archivo ~/.ssh/id_rsa.pub del cliente. Asumiendo que todos los servidores utilizan OpenSSH en lugar de otra implementacion diferente de SSH, la llave publica debe ser agregada en el archivo ~/.ssh/authorized_keys dentro de cada servidor.
Copiar la llave publica desde el cliente al servidor
fher98@deathbian:~$ scp ~/.ssh/id_rsa.pub servidor.guatewireless.org: id_rsa.pub 100% 395 0.4KB/s 00:00
Ahora se configura la llave publica en el servidor
server$ mkdir ~/.ssh server$ chmod 700 ~/.ssh server$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys server$ chmod 600 ~/.ssh/authorized_keys server$ rm ~/id_rsa.pub
Recordemos que es necesario agregar los nuevos datos de llaves publicas en el archivo authorized_keys, asi es posible utilizar multiples llaves publicas en el mismo servidor. Cada registro de llave publica debe estar en una linea diferente del archivo.
Para verificar que las conexiones de llaves publicas hacia el servidor funcionan correctamente realizamos la siguiente prueba;
Desde el cliente
fher98@deathbian:~$ ssh -o PreferredAuthentications=publickey servidor.guatewireless.org Enter passphrase for key '/�/.ssh/id_rsa': � � server$
En un proximo articulo les mostrare como configurar el proceso ssh-agent.
Excelente bien didactico.
Gracias por tu articulo, lo encontre bastante bueno y he implementado el servicio con una de mis maquinas… lo que ha funcionado perfectamente. Como podrias hacer un loggin automatico usando el mismo concepto… teniendo en cuenta que si te copian tu llave, habra un serio problema de seguridad, el cual se resuelve generando otra llave y borrando la anterior del authorized_keys.
El articulo de ssh-agent, no lo tienes aun?
Saludos y gracias una vez mas.
Ricardo:
Me agrada que te haya servido el articulo. Es un gran problema si te roban la llave, por eso hay que tenerla bien resguardada en tu sistema para que alguien mas no la utilize.
Aun no tengo lo de ssh-agent, pero ya que te interesa te lo tendre para esta semana, estamos?
saludos! y gracias por leer