Con este tutorial os voy a enseñar como se configura correctamente el acceso sFTP y enjaular a un usuario pretederminado a su carpeta .
Nota: Por seguridad de nuestro servidor, crearemos usuarios SOLO para acceso sFTP ( evitar a toda costa acceso ROOT ).

¿Que es sFTP?
-Al conectarse por sFTP, utilizaremos el mismo puerto que SSH ( Puerto por defecto 22 ) .sFTP es un protocolo de transferencia de archivos que utiliza SSH (Secure Shell) para asegurar los comandos y los datos que se transfieren entre el cliente y el servidor, por lo que dejan de ser vulnerables a escuchas furtivas, interferencias o falsificaciones.
Con sFTP, los datos transferidos entre el cliente y el servidor están cifrados, lo que evita que usuarios no autorizados tengan acceso a ellos. Deberías utilizar sFTP cuando necesites transferir datos confidenciales o de carácter crítico entre un cliente y un servidor configurado para usar SSH en transferencias seguras.
SSH File Transfer Protocol, es completamente diferente del protocolo FTP (File Transfer Protocol). SFTP fue contruído desde cero y añade la característica de FTP a SSH. Sólo usa un canal de comunicación, envía y recibe los mensajes en binario (y no en formato texto como hace FTP).
-EL servicio sFTP viene preinstalado en Linux ( en el caso si utilizamos OpenSSH)
Instalando OpenSSH (evitar paso si ya lo tenemos instalado):
Antes de instalar nada, es necesario actualiar repositorios, para ello iremos al terminal SSH y pondremos el comando:
Código: Seleccionar todo
sudo apt-get update
Código: Seleccionar todo
sudo apt-get install openssh-server
Para crear el usuario para tener acceso a dicha carpeta por sFTP ( por ejemplo: kike ) pondremos lo siguiente:
Código: Seleccionar todo
sudo adduser kike
Ahora vamos a editar el archivo de configuracion OpenSSH introduciendo el comando en la terminal SSH:
Código: Seleccionar todo
sudo nano /etc/ssh/sshd_config
Y la modificaremos por:Subsystem sftp /usr/lib/openssh/sftp-server
Ahora en la parte inferior de archivo copiaremos lo siguiente:Subsystem sftp internal-sftp
Explicación:Match user kike
ChrootDirectory /media/kike
X11Forwarding no
AllowTcpForwarding no
PasswordAuthentication yes
ForceCommand internal-sftp
Match user kike : Usuario que hemos creado anteriormente para conectarnos únicamente por sFTP.
ChrootDirectory /media/kike : Directorio en el cual vamos a enjaular al usuario "Kike" ((solo podrá tener acceso a esa ruta)) .
ForceCommand internal-sftp : Con esta linea conseguimos que solo se pueda conectar por sFTP ((Cancelamos conexiones por SSH, así nos evitaremos males mayores))
Una vez modificado el archivo, guardaremos los cambios pulsando estas teclas:
Control + X
tecleamos Y
ENTER
Y ahora vamos a darle permisos correspondientes a la carpeta configurada (/media/kike) dependiendo del uso que queramos ( lectura, escritura,ejecución).
En este caso le daremos permisos de lectura ,escritura y ejecución.
Hacemos propietario a Kike en la carpeta /media/kike
Damos los permisos con:sudo chown kike -R /media/kike
Ahora solo nos queda reiniciar la Pi para que se guarden correctamente todos los cambios , ponemos el siguiente comando en el terminal SSH:sudo chmod 744 -R /media/kike
Código: Seleccionar todo
sudo reboot
(Ojo, debemos crear una nueva conexión y que sea por sFTP, no utilizeis conexión rapida)

Y todo listo!!! Ya teneis acceso sFTP enjaulado!!!
Para cualquier duda o problema que tengais, aquí estoy a vuestra disposición
