Guía completa para configurar un servidor y cliente SFTP en Linux y comandos de uso

Artículos Guías Manuales Sistemas Linux Windows Binario 0

1. Introducción a SFTP en Linux

SFTP (Secure File Transfer Protocol) es un protocolo seguro utilizado para transferir archivos entre sistemas mediante una conexión cifrada a través de SSH (Secure Shell). A diferencia de FTP, que transmite los datos y credenciales en texto claro, SFTP cifra toda la sesión, lo que lo hace mucho más seguro.

SFTP viene integrado con el protocolo SSH, por lo que si tienes SSH configurado en un servidor Linux, ya tienes SFTP disponible. En esta guía, aprenderás a configurar y usar SFTP en un entorno Linux, tanto para servidor como para cliente, junto con ejemplos de comandos básicos.

2. Requisitos previos

Antes de comenzar, asegúrate de cumplir con los siguientes requisitos:

  • Un servidor Linux con acceso root o privilegios sudo.
  • Un cliente Linux que también pueda conectarse al servidor a través de SSH.
  • Conexión a Internet para instalar cualquier paquete necesario.

3. Configuración del servidor SFTP en Linux

Paso 1: Instalar el servidor OpenSSH

SFTP es parte del paquete OpenSSH. Si SSH no está instalado en tu servidor, puedes instalarlo de la siguiente manera:

En Debian/Ubuntu:

sudo apt update
sudo apt install openssh-server

En CentOS/RHEL:

sudo yum install openssh-server

Paso 2: Verificar el servicio SSH

Para verificar que el servicio SSH esté activo y ejecutándose, utiliza el siguiente comando:

sudo systemctl status ssh

Si el servicio no está en ejecución, puedes iniciarlo con:

sudo systemctl start ssh

También puedes habilitarlo para que se inicie automáticamente al arrancar el servidor:

sudo systemctl enable ssh

Paso 3: Configurar un entorno restringido para usuarios SFTP

Para mayor seguridad, se puede configurar un chroot jail, lo que restringirá a los usuarios SFTP a su propio directorio y evitará que accedan a otras partes del sistema.

  1. Editar el archivo de configuración de SSH:Abre el archivo de configuración de SSH:

    sudo nano /etc/ssh/sshd_config
  2. Agregar la configuración para SFTP:Añade las siguientes líneas al final del archivo para configurar un entorno chroot para los usuarios SFTP:

    Subsystem sftp internal-sftp

    Match User <nombre_del_usuario_sftp>
    ChrootDirectory /home/<nombre_del_usuario_sftp>
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

    Asegúrate de reemplazar <nombre_del_usuario_sftp> con el nombre del usuario que quieras restringir al uso de SFTP.
  3. Configurar el directorio chroot:El directorio especificado como ChrootDirectory debe pertenecer a root y no debe ser editable por otros usuarios. Ejecuta los siguientes comandos para ajustar los permisos:

    sudo mkdir /home/<nombre_del_usuario_sftp>
    sudo chown root:root /home/<nombre_del_usuario_sftp>
    sudo chmod 755 /home/<nombre_del_usuario_sftp>

    Luego, crea un subdirectorio donde el usuario tenga permisos para subir archivos:

    sudo mkdir /home/<nombre_del_usuario_sftp>/uploads
    sudo chown <nombre_del_usuario_sftp>:<grupo> /home/<nombre_del_usuario_sftp>/uploads

Paso 4: Reiniciar el servicio SSH

Después de realizar los cambios en el archivo de configuración, reinicia el servicio SSH:

sudo systemctl restart ssh

4. Gestión de usuarios SFTP

Crear un nuevo usuario para SFTP

Si necesitas crear un usuario solo para acceder a SFTP, usa los siguientes comandos:

  1. Crear el usuario sin acceso a shell:

    sudo adduser <nombre_del_usuario_sftp>
  2. Cambiar el shell del usuario a /bin/false para evitar el acceso SSH completo:

    sudo usermod -s /bin/false <nombre_del_usuario_sftp>

Ahora este usuario solo tendrá acceso a SFTP y estará restringido al directorio que hayas configurado.

5. Configuración del cliente SFTP en Linux

Para conectarte a un servidor SFTP desde un cliente Linux, simplemente puedes usar el cliente SFTP incorporado en OpenSSH.

Conectarse a un servidor SFTP

  1. Abrir una terminal.
  2. Conectar al servidor SFTP con el siguiente comando:

    sftp <usuario>@<dirección_ip_servidor>

    Por ejemplo:

    sftp [email protected]
  3. Autenticarse: Se te pedirá la contraseña del usuario SFTP. Una vez autenticado, estarás en el entorno SFTP.

6. Comandos básicos de SFTP

SFTP tiene una serie de comandos que te permiten gestionar archivos de manera eficiente. A continuación se presentan algunos de los comandos más comunes que puedes usar una vez que te hayas conectado a un servidor SFTP.

Comandos comunes:

  • Listar archivos en el servidor remoto:

    ls
  • Cambiar de directorio en el servidor remoto:

    cd <directorio_remoto>
  • Subir un archivo desde el sistema local al servidor remoto:

    put <archivo_local>

    Ejemplo:

    put documento.txt
  • Subir varios archivos al servidor remoto:

    mput *.txt
  • Descargar un archivo desde el servidor remoto al sistema local:

    get <archivo_remoto>

    Ejemplo:

    get imagen.jpg
  • Descargar varios archivos desde el servidor remoto al sistema local:

    mget *.jpg
  • Crear un directorio en el servidor remoto:

    mkdir <nombre_directorio>
  • Eliminar un archivo en el servidor remoto:

    rm <archivo_remoto>
  • Salir de la sesión SFTP:

    bye

Ejemplo de una sesión completa de SFTP:

sftp [email protected]
password: ********
sftp> ls
file1.txt file2.jpg carpeta/
sftp> cd carpeta
sftp> put nuevo_archivo.txt
sftp> get file2.jpg
sftp> mkdir nuevo_directorio
sftp> bye

7. Consejos de seguridad para SFTP

  • Deshabilitar acceso SSH para usuarios SFTP: Si quieres que los usuarios solo puedan conectarse mediante SFTP y no SSH, asegúrate de configurar correctamente su shell a /bin/false o /usr/sbin/nologin.
  • Utilizar claves SSH para mayor seguridad: En lugar de usar contraseñas, puedes habilitar el uso de claves SSH para una autenticación más segura. Para configurarlo:
    1. Genera un par de claves SSH en el cliente:

      ssh-keygen -t rsa
    2. Copia la clave pública al servidor:

      ssh-copy-id <usuario>@<dirección_ip_servidor>
    3. Configura el servidor para permitir solo autenticación por clave pública: Edita el archivo /etc/ssh/sshd_config y asegúrate de que las siguientes líneas estén habilitadas:

      PubkeyAuthentication yes
      PasswordAuthentication no
  • Revisar logs: Los registros de SSH pueden ser revisados para monitorear cualquier actividad sospechosa. Los logs de SSH y SFTP generalmente se encuentran en /var/log/auth.log o /var/log/secure.

8. Conclusión

SFTP es una herramienta poderosa y segura para la transferencia de archivos en entornos Linux. Su integración con SSH garantiza una capa de seguridad robusta para la transmisión de datos, y la configuración es sencilla si ya tienes SSH habilitado en tu servidor. Esta guía te ha mostrado cómo configurar un servidor y cliente SFTP, así como los comandos más comunes para gestionar tus archivos de manera eficiente.