Seleccionar página
🔐 Conexiones con claves SSH

🔐 Conexiones con claves SSH

Las contraseñas son un método de autentificación de control de acceso, utilizado en la gran mayoría de sitios web y otro tipo de software. Con el paso de los años queda demostrado que las contraseñas no son lo suficientemente seguras, y aquí entran las claves SSH.

El acceso SSH a un servidor es muy importante, es el principal acceso a un servidor y por el cual acceden la gran mayoría de administradores a sus servidores, es por eso que es muy importante securizar su acceso. Para avanzar con este post es importante haber leído ya el primer post que explicaba los pasos iniciales en Ubuntu Server 20.04.

📝 Creación de las claves

Para crear las claves, lo realizaremos a través del sistema operativo Linux, es realmente sencillo crear el par de claves. Desde un terminal ejecutamos el siguiente comando.

ssh-keygen

Se creará un par de claves RSA, una vez introducido el comando veremos lo siguiente.

Generating public/private rsa key pair.
Enter file in which to save the key (/home/gfranco/.ssh/id_rsa):

Podemos elegir la ruta donde queramos el par de claves, por defecto las dejamos dentro del directorio oculto llamado .ssh, cambiar la ruta puede servir para generar más de un sólo par de claves en tu mismo dispositivo.

A continuación nos pedirá una contraseña, lo cuál es muy recomendable pero no necesario. La contraseña dentro de la clave nos proporciona mucha más seguridad para el acceso al servidor.

Your identification has been saved in /home/gfranco/.ssh/id_rsa
Your public key has been saved in /home/gfranco/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:AHg8LOxnWjL81sSVux0YWy52rrQRcfmQVkC0GzxGMaw gfranco@nebula
The key's randomart image is:
+---[RSA 3072]----+
| . +.    =B*.    |
|  + =.  =oOo     |
| o o o.. %*o     |
|  = + o.E.++.    |
|   O o .SB..     |
|  . o . + o      |
|   .   . +       |
|        o        |
|                 |
+----[SHA256]-----+

Y ya tendremos nuestra clave pública y privada para realizar autenticación en servidores a través de SSH. Una vez conseguida la clave podemos proceder a subirla a nuestro servidor.

📤 Subida de clave al servidor

Para realizar la subida al servidor puedes hacerlo de varias maneras, puedes utilizar la instrucción ssh-copy-id que es la manera más sencilla de hacerlo. Para hacerlo debes tener ya creado tu propio usuario en la máquina remota y habilitado el acceso mediante contraseña, y en la cuenta a la que inicies sesión se copiará la clave de SSH pública.

El comando deberá tener el siguiente resultado, siendo gfranco tu usuario del servidor y nebula.cat la dirección de tu servidor.

ssh-copy-id gfranco@nebula.cat

En el caso de que tengas más de un solo par de claves puedes especificar la clave que quieres utilizar con el parámetro -i.

ssh-copy-id -i ~/.ssh/nebula gfranco@nebula.cat

🔒 Securizar el acceso a sólo claves

Una buena medida de seguridad es permitir únicamente el acceso al servidor a través de claves SSH, una vez subida tu clave al servidor y funcionando correctamente lo único que tendremos que hacer es desactivar el acceso a través de contraseña y activar el acceso a través de claves SSH.

Deberemos modificar el fichero de configuración SSH que es el /etc/ssh/sshd_config:

...
PubkeyAuthentication yes
...
PasswordAuthentication no
...

Y reiniciamos el servicio SSH con el siguiente comando:

sudo systemctl restart ssh.service

O con el comando:

sudo systemctl restart sshd.service