Autentificar de forma transparente mediante OpenSSH

Autentificar de forma transparente mediante OpenSSH

SSH es un protocolo que está preparado para que sea posible la autentificación de forma segura cifrando todo el tráfico que envía y descifrando todo el que recibe. Para este proceso se utiliza una contraseña que aumenta enormemente la seguridad ya que no solo habría que tener la clave SSH para cifrar/descifrar, sino que además la contraseña para autentificarse.
Aún a riesgo de tener un poco menos de seguridad podemos dejar esta contraseña en blanco y dar permisos para conectar sin que se pida contraseña. Continúa siendo bastante seguro en la mayoría de las situaciones ya que habría que robar del ordenador la clave ssh para poder conectar.
De esta forma solo bajamos un poco la seguridad pero ganamos mucha comodidad si simplemente es para uso casero en una intranet apenas habrá bajado la seguridad.
Una de las principales utilidades para lo que yo suelo utilizar es para sincronizar directorios entre equipos de forma transparente mediante scripts, además para copiar backups en un servidor.
Una autentificación transparente permite que no necesite la intervención para introducir la contraseña manualmente ya que se dispone de una clave privada y otra pública. Esto no es el método más seguro pero para una red casera o de pequeña oficina en intranet probablemente no necesitemos más seguridad y siempre se puede complementar mediante cortafuego o filtrado de mac, ip y red por ejemplo.
En esta entrada a continuación voy a explicar como autentificarnos en un servidor sin tener que introducir la contraseña, es decir, autentificarnos de forma transparente.

Autentificación transparente sin pedir contraseña por ssh

Autentificación transparente sin pedir contraseña por ssh

Generar la clave pública y privada en el cliente

Antes que nada vamos a generar las parejas de claves en el cliente.
Para generar las claves en el cliente usaremos el comando ssh-keygen y no introduciremos clave de paso (passphrase) dejándola en blanco en cuanto nos sea pedida ya que si la introducimos nos pedirá la contraseña cuando intentemos loguearnos perdiendo la posibilidad de autentificarnos de forma transparente sin clave.
Nos logueamos con el usuario que pretenda generar la clave en el cliente con "sudo -u" seguido del usuario que se autentificará.
En el siguiente ejemplo crearé la pareja de claves para el usuario laguialinux. La clave será de tipo "DSA" con una fuerza de 1024 bytes de longitud (podéis cambiar el tipo y fuerza según os convenga) quedando algo similar a esto:

sudo -u laguialinux ssh-keygen -t dsa -b 1024

Introducir la clave pública en el servidor

En el paso anterior hemos generado la clave pública y privada para un usuario en el equipo cliente.
A continuación tenemos que introducir la clave publica del cliente id_dsa.pub en el archivo de claves autorizadas del servidor para que pueda funcionar la autentificación transparente.
Suponiendo que nuestro usuario es de nuevo en el servidor también laguialinux tendríamos que copiar el contenido del siguiente archivo en el cliente (quien se conecta al otro equipo) que se encuentra en la siguiente ruta:

/home/laguialinux/.ssh/id_dsa.pub

Y lo pegaremos en el equipo que haga de SERVIDOR dentro del siguiente archivo:

/home/laguialinux/.ssh/authorized_keys

Tal vez no podáis hacerlo si estais con un usuario sin permisos de escritura en este directorio, en ese caso deberéis actuar con un usuario que si tenga permisos para ello o mediante root.
Si te resulta difícil pasar el archivo de un equipo a otro puedes incluso meterlo en un pendrive para pasarlo (también puedes conectar por ssh para ello entre un gran abanico de opciones)

Definir permisos en el Servidor

Ahora en el servidor debemos establecer ciertos permisos para asegurar este archivo y que no pueda ser leído por cualquier otro usuario en el mismo. De esta forma nos aseguramos que no nos puedan copiar la clave accediendo a nuestro equipo tan fácilmente.
De nuevo utilizaré el usuario "laguialinux" que deberás cambiar según el tuyo tanto en el usuario como en la ruta del home.
En mi caso quedaría de la siguiente forma para establecer que soy el propietario único de todo el directorio:

sudo chown laguialinux:laguialinux -R /home/laguialinux/.ssh

Ahora asignaré que solo el propietario pueda ver el directorio y leer sus archivos:

sudo chmod 700 /home/laguialinux/.ssh && chmod 600 /home/laguialinux/.ssh/authorized_keys

Ya tenemos configurado los dos equipos para acceder de forma transparente.
Reiniciamos el servicio SSH en el equipo servidor:

sudo systemctl restart ssh

Conectar desde el cliente al servidor

Probamos a ingresar desde el cliente hacia el servidor para comprobar que hemos hecho correctamente todo el proceso ya que ahora no debería pedir la contraseña. Volvemos a usar nuestro usuario@servidor de la siguiente forma:

sudo -u laguialinux ssh laguialinux@laguialinuxservidor.local

Repetiremos el proceso por cada usuario que deseemos que nos deje entrar mediante ssh de forma transparente.

Seguridad Linux
Votar Entrada: 
Average: 7.8 (4 votes)
Sigueme en google+: 

Añadir nuevo comentario