Lo más seguro es que al montar el servidor SFTP no nos interese que los usuarios que accedan a este servicio puedan leer y descargarse todos los archivos de nuestro sistema. Para evitar esto, realizaremos un enjaulado SFTP, con lo que limitaremos la navegación del cliente a unos determinados ficheros.
Para restringir esto debemos usar las directivas ForceCommand y ChrootDirectory en el archivo de configuración sshd_config, que se encuentra en /etc/ssh/sshd_config.
Primero hay que cambiar, la línea en /etc/ssh/sshd_config,
Subsystem sftp /usr/lib/openssh/sftp-server escribiendo en su lugar:
Subsystem sftp internal-sftp
Puede restringirse el servicio a usuarios o a grupos de usuarios, de modo que si se requiere aplicar
el enjaulado al usuario1 usamos la directiva Match como sigue:
UsePAM yes
Match user usuario1
ChrootDirectory /home/usuariossftp/usuario1
ForceCommand internal-sftp
Esto se coloca después de la línea Subsystem
El enjaulado del grupo usuariossftp se hace de manera similar (de esta forma aparecerán en el directorio raíz todos los usuarios que hayamos creado):
Match group usuariossftp
ChrootDirectory /home/usuariossftp
ForceCommand internal-sftp
Así, todos los usuarios que pertenezcan a este grupo irán a la jaula especificada en ChrootDirectory.
Para que la configuración tome efecto, restablezca ssh con el comando:
sudo /etc/init.d/ssh restart
Para finalizar una advertencia. Si antes en la configuración de ssh as introducido una línea tipo AllowUsers debes ponerla siempre antes de la línea Subsystem. Sino al reiniciar el servicio ssh te dará un error de esa línea.
Post redactador por Eduardo