Si quieres permitir el acceso por SFTP (FTP es cosa del pasado) a alguien a tu servidor VPS, tenemos que tener claro que hemos de crear un usuario (obviamente) y darle privilegios.

Notas preliminares

Este ejemplo está orientado a que un amigo o cliente acceda a tu servidor utilizando SFTP.

En mi caso, tengo el servidor apache para que funcione partiendo del directorio /var/www (Como suele ser habitual).

La jerarquía de directorios que tengo en /var/www se corresponde con los sitios web que alojo en dicho servidor, por ejemplo:

En este ejemplo pondremos la situación de que un cliente ha contratado nuestros servicios para realizar su página web y quiere acceder a su servidor (que ha contratado con nosotros).

En este caso, pongamos que el cliente (usuario a crear) se llamará dario.

Siguiendo la jerarquía explicada anteriormente, nuestro usuario tendrá asignado como home el directorio /var/www/dario.com y, por lo tanto, deberemos darle total control sobre dicho directorio (obviamente nosotros seguiremos pudiendo acceder a él por ser root).

También parto de la base de que sabes crear el directorio al que le daremos acceso al usuario y que lo tienes creado.

Crear el usuario

Como ya he dicho antes, el usuario será dario, la contraseña la que escojamos y el directorio al que accederá al iniciar sesión por SFTP /var/www/dario.com.

Para ello, utilizamos el siguiente comando (es necesario acceder por SSH con permisos de administrador):

adduser --home /directorio/home/del/usuario nombredeusuario

O lo que es lo mismo, aplicado a nuestro ejemplo:

adduser --home /var/www/dario.com/ dario

Ahora que ya tenemos nuestro usuario creado, tenemos que nombrarlo dueño del directorio:

chown dario:dario /var/www/dario.com/

Y le damos permisos de escritura:

chmod 755 /var/www/dario.com

Habilitar y configurar el SFTP

Necesitamos que OpenSSH nos permita restringir a este usuario a su carpeta para que únicamente acceda a ella, pero también necesitamos configurarlo para que funcione adecuadamente.

Lo primero que vamos a hacer es editar el fichero sshd_config, utiliza tu editor favorito:

nano /etc/ssh/sshd_config

Localizamos la línea Subsystem sftp /usr/lib/openssh/sftp-server y le añadimos una almohadilla (#) delante para comentarla. A continuación agregamos debajo esta nueva instrucción: Subsystem sftp internal-sftp

Ahora, al final de este mismo fichero (sshd_config) agregamos las siguientes líneas:

Match User dario
    ChrootDirectory /var/www/dario.com/
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Donde le indicamos que si el usuario que intenta acceder es dario, le mande al directorio indicado.

Con esto, si lo hemos hecho bien, podremos probar a acceder desde Filezilla o cualquier cliente FTP y veremos que funciona (a mí me ha funcionado).

Si tienes cualquier duda puedes ponerlo en los comentarios, intentaré resolver todas las que pueda.