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...