En ocasiones necesitamos que otras personas tengan acceso restringido para poder subir algunos archivos, esto se puede solucionar de varias maneras; en esta ocasion les mostrare como crear un SFTP (FTP sobre ssh), esto nos permitira utilizar el puerto 22 para subir archivos a un folder de manera segura.

 

Creando grupos y usuarios

1. sudo groupadd sftpusers
2. sudo useradd -g sftpusers -d /incoming -s /sbin/nologin ftpuser

Modificando un usuario (Opcional)

1. sudo usermod -g sftpusers -d /incoming -s /sbin/nologin ftpuser

Ahora editamos el archivo /etc/ssh/sshd_config y agregamos las siguientes lineas al final

Subsystem sftp internal-sftp
Match Group sftpusers
  ChrootDirectory /sftp/%u
  ForceCommand internal-sftp

Creamos el directorio en donde se guardaran los archivos

1. sudo mkdir -p /sftp/ftpuser/incomming

Configuramos los permisos del directorio

1. sudo chown ftpuser:sftpusers /sftp/ftpuser/incoming
2. sudo chown root:root -R /sftp/ftpuser

Revisamos la sintaxis del archivo /etc/ssh/sshd_config y reiniciamos el servicio si todo esta correcto

1. sshd -t
2. sudo service sshd restart

Por ultimo no olvidemos crear un password para el usuario "ftpuser", crearemos un password seguro usando openssl y cuando nos pida el pasword para el usuario "ftpuser" copiamos y pegamos el que nos proporciono openssl.

1. openssl passwd <8_caracteres_aqui>
2. passwd ftpuser

 

Para conectarnos al SFTP podemos usar clientes visuales como filezilla o podemos usar la consola, aqui abajo les dejo los comandos mas basicos y la manera de conectarse.

1. sftp ftpuser@<IP_DEL_SERVER>

Comandos Basicos

cd - Cambio de directorio
chmod - cambiar permisos de archivo
chown - cambiar owner del archivo
exit - cerrar la conexion SFTP
get - descargar un archivo
put - subir un archivo
rename - renombrar un archivo
rm - eliminar un archivo
rmdir - eliminar un directorio