Permisos SSH en Synology sin ser administrador

En este post veremos cómo permitir que un usuario no administrador pueda conectarse por SSH en Synology.
Esto es útil, por ejemplo, para sincronizar backups de forma segura sin dar privilegios de administrador.

Empezaremos creando un usuario o usuarios, carpetas y luego aplicaremos los permisos para ssh.

Crear usuario y carpeta:

  1. Crear usuario
    • Crear un usuario desde el Panel de control > Usuario.
    • Puede pertenecer únicamente al grupo predeterminado `users` o a un grupo personalizado como `xsync_backup`.
  2. Darle permisos a la carpeta de backup
    • Ir a Panel de control > Carpetas compartidas.
    • Seleccionar la carpeta de destino del backup o crea una nueva.
    • Editar los permisos y asigna al usuario (o grupo) permisos de lectura y escritura según sea necesario.
      • Extra: también puedes crear carpetas individuales para cada usuario y darles permisos exclusivos.

Agregar permisos SSH

Tenemos que tener activo el ssh, en caso de no tenerlo lo activaremos desde:

  • Panel de control > Terminal y SNMP:
    • Marcar la casilla **»Habilitar servicio SSH»**.
    • Opcional: cambia el puerto si se desea (por ejemplo, 2933).

Modificar configuración de SSH (sshd_config)

Conéctate como `admin` por SSH y ejecutaremos el comando:

    sudo vi /etc/ssh/sshd_config

    Y añadiremos al final:

    # AllowUsers nombreUsuario - para las conexiones ssh
    AllowUsers admin xsync

    ⚠️ IMPORTANTE: Si defines `AllowUsers`, debes incluir **explícitamente todos los usuarios** que quieras permitir por SSH, incluyendo administradores como `admin`. Si no están en esa línea, no podrán conectarse.

    Habilitar shell para el usuario (para conectar por SSH)

    Por defecto, los usuarios creados en Synology suelen tener una shell inválida (/sbin/nologin).

    Ver permisos actuales del usuario:

    grep xsync /etc/passwd

    Si la salida termina con `/sbin/nologin` o `/usr/syno/bin/nologin`, no podrá usar SSH.


    Cambiar shell a `/bin/sh` para habilitar SSH:

    Como Synology no incluye el comando `usermod`, edita directamente el archivo `/etc/passwd`:

    sudo vi /etc/passwd

    Busca la línea del usuario creado, por ejemplo:

    xsync:x:1046:100:backup xsync:/var/services/homes/xsync:/sbin/nologin

    Y cámbiala por:

    xsync:x:1046:100:backup xsync:/var/services/homes/xsync:/bin/sh

    Luego guarda y cierra con :wq

    Ya podemos probar la conexión. El problema es que este cambio se pierde tras reiniciar.

    Automatizando cambio shell

    Podremos generar un archivo sh para automatizar esta tarea, copia las líneas y adaptalo con este ejemplo cambiando lo necesario:

    Comando detallado:

    usuario:contraseña:UID:GID:comentario:home:shell

    Contenido del sh:

    #!/bin/sh
    
    sed -i 's|xsync:x:1047:100:backup xsync:/var/services/homes/xsync:/sbin/nologin|xsync:x:1047:100:backup xsync:/var/services/homes/xsync:/bin/sh|' /etc/passwd

    Guárdalo en una carpeta accesible, por ejemplo /volume1/carpeta/set_shell_xsync.sh

    Programar tarea al arranque

    En Ejecutar comando, introduce:

    Ve a Panel de control > Programador de tareas.

    Crea una nueva tarea con:

    Usuario: root

    Evento: Arranque

    • Opcional: marcar «enviar detalles…via mail y solo si finaliza de forma anómala si queremos.
    • En ejecutar comando introduce:
    bash /volume1/carpeta/set_shell_xsync.sh

    Con esto tendremos automatizada la parte de cambios para poder poner q dichos usuarios puedan conectar via ssh y así sincronizar el backup.

    Revertir cambios (deshabilitar acceso SSH)

    Si quieres revocar acceso SSH al usuario, edita de nuevo /etc/passwd y cambia:

    /bin/sh → /sbin/nologin

    Reiniciar servicio SSH

    Para aplicar cambios sin reiniciar el NAS, podemos ejecutar:

    sudo systemctl restart sshd

    Con esto, el usuario podrá acceder por SSH siempre que tenga `/bin/sh` adaptando los pasos explicados.

     Recomendación de seguridad: nunca uses usuarios administradores para tareas automáticas como backups.

    Es mejor usar usuarios dedicados con acceso mínimo.

    Espero que os sirva de ayuda.

    Salu2