Voy a mostrar la manera de instalar un servidor SFTP en una maquina con Ubuntu 22. Para el acceso al servidor SFTP se puede utilizar un cliente FTP como Filezilla.
El servicio se puede configurar de 2 formas, la habitual en la que se le da acceso a una carpeta raíz del servidor y en función a los permisos que se tengan en esas carpetas se podrá acceder, se podrán listar, crear, modificar o borrar archivos, todo esto en función de los permisos.
La otra opción es acceder en modo «enjaulado«. Este modo lo que permite es que los usuarios accedan como carpeta raíz, solo a la carpeta que tengan configurada.
Para configurar en un servidor de Ubuntu el servicio SFTP en modo «enjaulado», lo primero es crear la estructura de carpetas.
mkdir /ruta/de/la/carpeta
Después de crear las carpetas para asegurar conviene dar permisos root a las mismas para que no de error cuando se accede por FTP
sudo chown root:root /ruta/de/la/carpeta
Después ya empezamos con la instalación del servidor SFTP
sudo apt update
sudo apt install ssh
Para editar el fichero de configuración:
sudo nano /etc/ssh/sshd_config
El fichero tiene muchas opciones, mas abajo dejo un ejemplo de un fichero de configuración donde esta configurado todo para el uso con varios usuarios. La parte mas importante para el enjaulamiento es esta:
Subsystem sftp internal-sftp
Match user usuario1
ChrootDirectory /var/sftp/usuario1
ForceCommand internal-sftp
AllowTcpForwarding no
PasswordAuthentication yes
PermitRootLogin no
En esta parte puedes ver que el Match user es el usuario1 y que el usuario1 tiene como carpeta raíz la carpeta usuario1 que está dentro de /var/sftp. Esto mismo hay que hacerlo para cada usuario y poner la carpeta raíz donde debe acceder. Lo mejor es que miréis en el fichero de ejemplo para que lo veáis completado.
De esta forma los usuarios solo pueden acceder a las carpetas que designemos y los tenemos enjaulados a ellas sin poder moverse fuera.
Una vez creado todo, recuerda reiniciar el servicio.
sudo systemctl restart ssh
FICHERO DE EJEMPLO SSH_CONFIG
GNU nano 6.2 /etc/ssh/sshd_config *
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# Allow client to pass locale environment variables
AcceptEnv LANG LC_*
# override default of no subsystems
#Subsystem sftp /usr/lib/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
Subsystem sftp internal-sftp
Match user usuario1
ChrootDirectory /var/sftp/usuario1
ForceCommand internal-sftp
AllowTcpForwarding no
PasswordAuthentication yes
PermitRootLogin no
Match user usuario2
ChrootDirectory /var/sftp/usuario2
ForceCommand internal-sftp
AllowTcpForwarding no
PasswordAuthentication yes
PermitRootLogin no
Match user usuario3
ChrootDirectory /var/sftp/usuario3
ForceCommand internal-sftp
AllowTcpForwarding no
PasswordAuthentication yes
PermitRootLogin no
Match user usuario4
ChrootDirectory /var/sftp/usuario4
ForceCommand internal-sftp
AllowTcpForwarding no
PasswordAuthentication yes
PermitRootLogin no
Deja una respuesta