La autenticación de SSH con clave pública y privada es una configuración interesante que sumará algo de seguridad a nuestro servidor SSH.

Autor de la imagen: Dvdrodriguez
   
| enlace imagen

Hemos de tener en cuenta que el uso de clave pública y clave privada en SSH implica un cifrado criptográfico asimétrico que una password simple no es capaz de ofrecer. Además hace posible que los usuarios puedan acceder al server SSH sin tener que recordar contraseñas largas.

El uso del par de claves pública/privada en SSH, implica que la clave privada permanece solo en el equipo del cliente.

Mientras que la clave pública permanece en el servidor (en el archivo /home/usuario/.ssh/authorized_keys por defecto, aunque se puede modificar en el archivo /etc/ssh/sshd_config).

 
 

 

En este artículo:


 

 

En un principio, tal como decíamos, el uso de clave privada y pública implica más seguridad, pero en ocasiones puede resultar que el usuario puede ceder su clave privada a sus amigos o incluso venderla por Bitcoins. Esto último ha llegado a ocurrir.

 

 

1. Pasos necesarios para SSH con clave publica y privada

 


 
 

2. GENERAR PAR DE CLAVE PÚBLICA Y PRIVADA

 
Primero hemos de generar la clave publica en el server Linux. Y la clave privada se generará a partir de la pública.

– Podemos generar una clave publica con PuTTYgen desde Windows y luego exportarla al server (aunque ya os anticipo que la generación de claves con PuTTYgen no es del todo compatible con el formato de las claves SSH de Open SSH de Linux, y llega a dar problemas, concrétamente el error: ssh server refused our key),
 

 

– o mejor generar las claves SSH desde linux con ssh-keygen:

1
ssh-keygen -t rsa

con el parametro -t le decimos qué tipo de cifrado deseamos (rsa, dsa …)


 

y la clave privada se habrá generado también, y es la que guardaremos en el equipo cliente:
 

 

 

si hacemos un listado del directorio /.ssh podremos ver que se han generado las claves pública y la privada:

Se ha generado la clave pública (id_rsa.pub)
y la clave privada (id_rsa)


 

 

2.1 Parámetros SSH-KEYGEN

 

Hay otros parámetros que podemos usar al generar un par de claves pública/privada con el comando ssh-keygen:

 

 

Además del parámetro -t, que permite elegir el tipo de cifrado, otros parámetros muy utilizados son:

-b : permite añadir un número de bits al crear la llave.

-c : permite añadir el archivo con la clave privada, introducir una frase de contraseña, y añadir un comentario.

-f : permite especificar el nombre del archivo de clave.

-l : permite mostrar el fingerprint o “huella dactilar” creada al generar la llave.


 

 

3. No olvidemos las directivas SSH que deben estar activadas (para el uso de clave pública y privada SSH):

 

–> RSAAuthentication yes

–> PubkeyAuthentication yes

–> AuthorizedKeysFile                    %h/.ssh/authorized_keys


 

 

3.1 Para más seguridad, desactivar estas otras directivas SSH:

 

Ya que vamos a habilitar el acceso con clave pública/privada, es interesante deshabilitar el acceso al servidor con contraseña.


 
Esto lo conseguimos configurando la directiva PassworAuthentication yes (por defecto está en yes) con la opción no (en el archivo sshd_config),
 

 

 

4. Otros requisitos importantes para SSH con clave pública y privada (permisos directorio .ssh y archivo authorized_keys):

 

Se han de revisar los permisos adecuados para el directorio /.ssh del usuario en el equipo cliente, y los archivos contenidos en él, incluido, claro, el archivo de clave privada; y el archivo authorized keys dentro del directorio de este usuario en el servidor SSH en el cual se autenticará (donde estará su clave pública).

 

La configuración incorrecta de estos permisos también puede dar lugar al error Server refused our key al intentar la conexión SSH al servidor.
 


 

 

 

5. Exportar la clave privada desde Server SSH a un cliente

 

Tenemos varios métodos para exportar las claves SSH al equipo cliente:

  • 4.1 Podemos mover la clave privada desde el navegador de archivos si es que el sistema Linux tiene interfaz gráfica (recordar que el propietario de los archivos ha de ser el usuario en cuestión que esté trabajando en ese momento).

 

  • 4.2 A través de la terminal, por ejemplo con ssh-copy-id

 

 


 

Conexión con smbclient (samba) desde Linux a Windows:

 

 

 

6. Conexión SSH con clave privada desde cliente

 

*** Importante:

Si vamos a conectar desde un cliente Windos, con el cliente SSH Putty, primero habremos de convertir la clave importada al formato que utiliza Putty.

 


 

Después, hemos de conectarnos por SSH con la clave privada desde el cliente (por ejemplo un cliente Windows con Putty):


 

 

6.1 Reiniciar servicio SSH

 
Para Linux Debian/Ubuntu, ejecutaremos:

1
/etc/init.d/ssh restart

o

1
service ssh restart

o

1
sudo systemctl restart ssh

 
Para otras distros Linux más info AQUÍ.
 

 

6.2 Éxito en conexión SSH

 

 
Éxito en conexión, pero al no haber deshabilitado la directiva PasswordAuthentication, nos sigue pidiendo el password, lo cual no necesitaríamos si ya tenemos activada la directiva y el acceso con claves pública-privada.
 

 

Si habilitamos la directiva con la opción no (en el archivo sshd_config),

 

 

podremos ver que Open SSH ya no nos pide la password sino simplemente nos autenticaremos con la clave pública-privada y el passphrase, claro:

 

 

Y en el log del archivo auth.log podremos ver:

 


 

 

Bueno, pues ya hemos hecho un buen repaso de las configuraciones necesarias para utilizar SSH con clave publica y privada, en Linux (preferible) y también utilizando clientes SSH Windows con PuTTY.

 


Etiquetas del articulo: , ,


Centro de preferencias de privacidad

Cookies imprescindibles

Se usan para saber si ya aceptaste nuestras políticas y para servir más rápidos los contenidos.

gpdr,wpSGCacheBypass

Cookies de terceros

Usamos cookies de terceros en las que se almacenan externamente para conocer tus usos de navegación, si ya estás suscrito al boletín y los elementos compartidos en redes sociales.

1P_JAR, AID, DSID, IDE, NID, JCS_INENREF, JCS_INENTIM, __cfduid, _ga, _gat, _gat_gtag_UA_16843793_11, _gid,_wpss_h_, _wpss_p_, gadwp_wg_default_dimension, gadwp_wg_default_metric, gadwp_wg_default_swmetric