Como configurar claves SSH para acceder a tus servidores Linux

2 minute read

Vamos a ver como configurar las claves públicas en nuestro servidor para poder acceder sin contraseñas

Para poder autenticarte en tu servidor hay dos posibilidades:

  • Utilizar una contraseña</br>
  • Utilizar una clave pública.</br>

En este artículo nos vamos a centrar en la segunda. Este método es el recomendado en VPS, servidores Cloud y creo ciertamente que es un método que añade un poco capa más de seguridad. Así que manos a la obra

Creación de las claves

Generaremos el par de claves pública (que se pondrá en nuestro servidor) y privada (sólo conoceremos nosotros) mediante rsa y un tamaño de 4096 bits. En el proceso nos pedirá donde queremos almacenar las claves generadas, si no tenemos ninguna otra clave el seleccionamos el PATH por defecto. Después nos pedirá que ingresemos un passphrase, introduciremos un passphrase lo más complejo que podamos que sea fácil de recordar.

# Generación de las claves
$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vcatalan/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/vcatalan/.ssh/id_rsa.
Your public key has been saved in /home/vcatalan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cHbsqJcymEUn81H2rxhvLvfxnse3ygAIrJ34QQHNx78 vcatalan@lap
The key's randomart image is:
+---[RSA 4096]----+
|   .+..   o      |
|    .o.o + .     |
|     +* * o .    |
|    =.oO.*   .   |
|   o +..S.+   .  |
|    .+.. E.+ .   |
|    o.+ o ..+ .. |
|       +  .o+  o=|
|           o.+o+*|
+----[SHA256]-----+

# Añadir a la lista de ssh-agent
$ ssh-add

Tras rellenar los pasos obtenemos los dos ficheros:

  • Your identification has been saved in /home/vcatalan/.ssh/id_rsa.</br>
  • Your public key has been saved in /home/vcatalan/.ssh/id_rsa.pub.</br>

Nota: Para evitar que nos pida el passphrase en la sesión ejecutamos el último comando ssh-add.

Instalación en el servidor

Para instalarlo se puede hacer por varias herramientas, pero puede que no esten instaladas en el equipo por lo que utilizaremos únicamente herramientas que vienen por defecto.

# Creamos el directorio .ssh en el servidor remoto
$ ssh user@remote.server mkdir .ssh

# Desde el directorio la clave pública
# Copiamos al servidor
~/.ssh $ cat id_rsa.pub | ssh user@remote.server 'cat >> .ssh/authorized_keys'
user@remote.server's password: 

# Seguridad: Actualizar los permisos de las carpetas en el servidor
~/.ssh $ ssh user@remote.server 'chmod 700 .ssh; chmod 640 .ssh/authorized_keys'

Si se ha instalado correctamente, habrás podido comprobar que el último comando ya lo has podido ejecutar sin haber introducido la contraseña, y ya lo tienes configurado.

A continuación deshabilitaremos el acceso por contraseña al servidor, que está configurado en /etc/ssh/sshd_config

# Editamos el archivo
$ sudo vi /etc/ssh/sshd_config

# Evita que se pueda hacer login con root
# NOTA: ASEGURATE DE TENER UN USARIO ADMINISTRADOR
# O PERDERAS EL ACCESO ROOT A TU SERVIDOR
PermitRootLogin no

# Evita que se pueda hacer login con los usuarios
PasswordAuthentication no 

# Reinicio del demonio sshd
$ sudo service ssh restart

¡Enhorabuena! Ya lo tienes configurado. Sólo tienes que proteger esa clave privada en algún sitio seguro.

Saludos.

Updated: