Raspberry Pi - Servidor OpenSSH SFTP en Ubuntu


Índice:


Usando una Raspberry-Pi, un disco duro mecánico conectado por USB y Ubuntu

Server 22.04.02 LTS (64-bit), se crea un servidor SFTP para varios usuarios

puedan acceder a carpetas privadas en el servidor.


Opcionalmente se puede crear carpetas adicionales con distintos accesos, como

por ejemplo una carpeta en la que todos los usuariospuedieran compartir archi-

vos.


Los usuarios tendrán acceso al servidor exclusivamente mediante sftp.



En /mnt se crea el directorio raíz del servidor:

    sudo mkdir /mnt/usb_hdd


Añadir una línea en /etc/fstab para montar el disco USB al iniciar el sistema:

    # Obtener el UIDD del disco USB

    sudo lbisk


    # Linea a incluir en /etc/fstab

    UUID=84c6f128-248c-4144-a569-52eba6c0810e /mnt/usb_hdd defautls 0 2


    # Editar el fstab

    sudo nano /etc/fstab


    # Reiniciar el sistema 

    sudo reboot      


Crear grupo de usuarios que accederán al servidor por sftp:

    sudo addgroup sftpaccess


Crear usuarios:

    # Crear carpeta personal del usuario en el servidor

    sudo mkdir user_1


    # Crear usuario (*)

    sudo useradd -G sftpacces -d /mnt/user_1 -s /sbin/nologin user_1


    # Asignar contraseña

    sudo passwd user_1


    # Configurar persmisos de la carpeta personal del usuario

    sudo chown root:user_1 -R /mnt/usb_hdd/user_1

    sudo chmod 770 /mnt/usb_hdd/user_1  


Configurar SSH server para habiliar el servicio SFTP.


Se permite el acceso al grupo sftp, así como se limita el acceso sftp a

archivos fuera de /mnt/disco_usb/ configurando chroot jail.


    # Editar el archivo de configuración

    sudo nano /etc/ssh/sshd_config


    # Incluir al final del archivo /etc/ssh/sshd_config  (**)

    Match Group sftpaccess

    ForceCommand internal-sftp

    PasswordAuthentication yes

    ChrootDirectory /mnt/disco_usb

    PermitTunnel no

    AllowAgentForwarding no

    AllowTcpForwarding no

    X11Forwarding no


    # Tras guardar los cambios reiniciar el servicio

    sudo systemctl restart sshd




    sudo useradd -G sftpacces -d /mnt/user_1 -s /sbin/nologin user_1


.) -d /mnt/user_1 : Asigna /mnt/user_1 como la carpeta personal del usuario.

.) -s /sbin/nologin user_1 : Impide que user_1 pueda logarse en el sistema.

El usuario sólo podrá acceder al servicio sftp.




  Match Group sftpaccess

Especifica que los siguientes ajustes sólo se aplicarán a los usuarios del

grupo sftpacess.


  ForceCommand internal-sftp

Fuerza al servidor SSH a utilizar el subsistema SFTP (Secure File Transfer

Protocol) sólo cuando el usuario "user_1" inicia sesión, deshabilitando el

acceso shell.


  PasswordAuthentication yes

Permite la autenticación basada en contraseña para el usuario.


  ChrootDirectory /mnt/disco_usb

Restringe al usuario al directorio y sus subdirectorios, impidiéndole el ac-

ceso a otros directorios del sistema de ficheros.


  PermitTunnel no

Prohíbe la creación de túneles (es decir, la creación de una conexión de red

segura a través de una conexión SSH) para el usuario.


  AllowAgentForwarding no

Deshabilita el reenvío de agentes, que permite a los usuarios utilizar sus

claves ssh para iniciar sesión en los servidores sin tener que escribir su

contraseña .


  AllowTcpForwarding no

Deshabilita el reenvío de puertos, que permite a los usuarios reenviar cone-

xiones de red a través de SSH.


  X11Forwarding no

Desactiva el reenvío X11, que permite conexiones gráficas remotas a través

de SSH...