Blog personal donde guardo mis notas sobre tecnología

Synology: Autenticación mediante llave pública en SSH

Carlos M.

Normalmente cuando accedes mediante SSH a tu servidor NAS sueles habilitar el servicio SSH, si no lo tenias habilitado ya, y te autentificas mediante un usuario y contraseña. Utilizando la llave publica para autenticarte podrás conectar con tu servidor sin necesidad de introducir un usuario y contraseña.

Fichero de configuración #

Lo primero que debemos de hacer es conectarnos mediante SSH a nuestro servidor como lo haces normalmente, con tu usuario y contraseña y editar el fichero /etc/ssh/sshd_config Al ser un fichero del sistema necesitaras utilizar sudo para obtener permisos de administrador, recuerda que para poder utilizar el comando sudo el usuario debe de pertenecer al grupo de Administradores

sudo vi /etc/ssh/sshd_config

Descomenta las lineas que contengan PubkeyAuthentication yes y AuthorizedKeysFile

Si además quieres que sólo se pueda acceder mediante la clave publica y deshabilitar el login mediante contraseña, pondremos la linea PasswordAuthentication no

Si no estas habituado a trabajar con el edito vi, simplemente pulsa la tecla i para entrar en modo insertar, cuando termines, pulsa la tecla ESC, luego : y por ultimo wq! para salvar los cambios y salir

Reiniciar servidor SSH #

Como hemos modificado el fichero de configuración deberemos reiniciar el servicion SSH, podemos hacerlo de dos formas diferentes

  • Habilitando y deshabilitando el servicio desde DSM
  • Si aun estamos conectado al NAS por SSH, ejecutando el comando
sudo synoservicectl --restart sshd

Generar las claves #

Ahora necesitamos generar el par de claves pública y privada de nuestro usuario en el NAS, así que volvemos a conectar vía SSH al servidor y ejecutamos el comando ssh-keygen -t rsa, no pongas ninguna contraseña a las claves.

ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/services/homes/usuario/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/services/homes/usuario/.ssh/id_rsa.
Your public key has been saved in /var/services/homes/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx usuario@dominio-NAS
The key's randomart image is:
+---[RSA 2048]----+
|           .++.o=|
|           E.....|
|          .   +  |
|         o . o . |
|        S = +   .|
|         . O o o |
|          = = oo=|
|           o.O==*|
|           oOX%B*|
+----[SHA256]-----+

Permisos unix #

Debemos de dar los permisos Unix adecuados a las carpetas y ficheros en el NAS, si no, no funcionara

chmod 0711 ~/.ssh
chmod 0600 ~/.ssh/authorized_keys
chmod 0711 ~

Copia clave pública #

Para terminar debemos de copiar la clave pública del usuario que va realizar la conexión al servidor NAS con el comando ssh-copy-id,, desde el ordenador que quieras conectarte escribe:

ssh-copy-id  usario@direcion.ip.servidor
usario@direcion.ip.servidor's  password:
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh  'usario@direcion.ip.servidor'"
and check to make sure that only the key(s) you wanted were added.

Conectando #

Probamos la conexión, para comprobar que no nos pide la contraseña

ssh usario@direcion.ip.servidor

Espero que te haya gustado, pasa un buen día… 🐧

Referencia: #