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 [email protected] de la siguiente forma:

sudo -u laguialinux ssh [email protected]


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

Seguridad Linux

Raúl Caro Pastorino

Informático, técnico en sistemas, redes, baja tensión (electricidad) y desarrollador de aplicaciones WEB. Soy un apasionado por GNU/LINUX y el software libre en general desde prácticamente el año 2001-2003 que comencé. Intento usar y trabajar siempre con código libre o abierto de forma profesional. Me apasiona la programación, la micro-electrónica, el diseño gráfico y edición multimedia. Fan de Raspberry y arduino. Programo en bash, python, php y javascript principalmente. Repositorios de código con git: https://gitlab.com/fryntiz https://github.com/fryntiz

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.