GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar y usar SFTP en servidores Linux

El protocolo de transferencia de archivos SFTP o SSH es un método para transferir datos de forma segura entre dos computadoras y más. Es FTP que se ejecuta sobre el protocolo SSH y aprovecha su seguridad y es totalmente compatible con su autenticación.

Hoy en día, se recomienda utilizar SFTP en lugar del antiguo protocolo FTP o FTP/S heredado. SFTP es seguro de forma predeterminada porque así es como funciona SSH. Desde el punto de vista de la seguridad, SFTP también lo protege contra la detección de contraseñas y los ataques de intermediarios (MiTM).

Al igual que SSH, SFTP también protege la integridad de sus datos mediante el cifrado y la función hash criptográfica. Además, admite múltiples métodos de autenticación seguros, incluida la autenticación basada en contraseñas y claves. Además, reduce el puerto abierto del servidor a la red exterior, porque se ejecuta en el mismo puerto que el protocolo SSH.

Requisitos

En esta guía, aprenderá a configurar el servidor SFTP en un sistema Linux. Además, aprenderá el comando básico del cliente sftp.

A continuación se muestra el entorno actual para la implementación:

  • Un servidor Linux:puede usar Debian, Ubuntu, CentOS, Fedora, Rocky o cualquier otra distribución de Linux.
  • Asegúrese de que los paquetes de OpenSSH estén disponibles en su sistema Linux.
  • Cliente SFTP:línea de comandos sftp o cualquier cliente GUI que prefiera.

Verificar paquetes OpenSSH

Para configurar un servidor SFTP, debe tener paquetes OpenSSH instalados en su sistema Linux. Casi todos los servidores de distribución de Linux tienen los paquetes OpenSSH instalados de forma predeterminada. Pero, en caso de que no tenga el paquete OpenSSH en su sistema, puede instalarlo desde el repositorio oficial.

1. Para asegurarse de que los paquetes OpenSSH estén instalados en su sistema Linux, use el siguiente comando.

Para servidores Debian o Ubuntu, puede usar el siguiente comando dpkg.

dpkg -l | grep ssh

A continuación se muestra el resultado de nuestro sistema Debian.

ii  libssh2-1:amd64               1.9.0-2                        amd64        SSH2 client-side library
ii  openssh-client                1:8.4p1-5                      amd64        secure shell (SSH) client, for secure access to remote machines
ii  openssh-server                1:8.4p1-5                      amd64        secure shell (SSH) server, for secure access from remote machines
ii  openssh-sftp-server           1:8.4p1-5                      amd64        secure shell (SSH) sftp server module, for SFTP access from remote machines

La primera columna 'ii ' significa que el paquete está instalado. El paquete 'openssh-sftp-server ' está instalado en el sistema Debian/Ubuntu.

Para usuarios de RHEL/CentOS/Fedora/Rocky Linux/AlmaLinux, puede usar el comando rpm como se muestra a continuación.

rpm -qa | grep ssh

Crear grupo y usuario

En este paso, creará un nuevo grupo y usuario para el servidor SFTP. Los usuarios dentro de este grupo podrán acceder al servidor SFTP. Y por motivos de seguridad, los usuarios de SFTP no pueden acceder al servicio SSH. Los usuarios de SFTP solo acceden al servidor SFTP.

1. Ejecute el siguiente comando para crear un nuevo grupo 'sftpgroup '.

sudo groupadd sftpgroup

2. Cree un nuevo usuario 'sftpuser ' usando el siguiente comando.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Opciones detalladas:

  • -G :agrega automáticamente al usuario al 'sftpgroup '.
  • -d :especifique el directorio de inicio para el nuevo usuario.
  • -s :establezca el valor predeterminado para el nuevo usuario en '/sbin/nologin ', lo que significa que el usuario no puede acceder al servidor SSH.

3. A continuación, cree la contraseña para el usuario 'sftpuser ' usando el siguiente comando.

passwd sftpuser

Escriba su contraseña segura y repita, luego presione 'Enter ' para confirmar.

Para agregar más usuarios, repita las etapas número 2 y 3, y lo más importante, todos los usuarios de SFTP deben estar en el grupo 'sftpgroup ' sin acceso de shell a través de SSH.

Configurar el directorio de la cárcel de Chroot

Después de crear un nuevo grupo y usuario, debe crear y configurar el directorio chroot para los usuarios de SFTP.

1. Para el usuario 'sftpuser', el nuevo directorio de inicio estará en '/srv/sftpuser' . Ejecute el siguiente comando para crearlo.

mkdir -p /srv/sftpuser

2. Para configurar chroot para el usuario 'sftpuser ', debe cambiar la propiedad del directorio al usuario raíz, pero seguir siendo el grupo para leer y ejecutar sin acceso de escritura.

Cambie la propiedad del directorio al usuario 'raíz' usando el siguiente comando.

sudo chown root /srv/sftpuser

Da permiso al grupo para leer y ejecutar, pero no para escribir.

sudo chmod g+rx /srv/sftpuser

3. A continuación, cree un nuevo directorio de 'datos' dentro de '/srv/sftpuser ' y cambie la propiedad de esos 'datos ' directorio al usuario 'sftpuser '.

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Hasta ahora, a continuación se detalla la configuración del directorio de usuarios de SFTP.

  • El directorio '/srv/sftuser' es el directorio de inicio predeterminado.
  • El usuario 'sftpuser ' no puedo escribir en el directorio '/srv/sftpuser ', pero puede leer dentro de ese directorio.
  • El usuario 'sftpuser ' puede cargar archivos al servidor SFTP en el directorio '/srv/sftpuser/data '.

Habilitar SFTP en el servidor SSH

Para habilitar el servidor SFTP en OpenSSH, debe editar la configuración SSH '/etc/ssh/sshd_config'.

1. Edite la configuración de ssh '/etc/ssh/sshd_config ' usando nano o vim.

sudo nano /etc/ssh/sshd_config

2. Comentar la siguiente configuración para deshabilitar el 'sftp-server independiente ' característica.

#Subsystem      sftp    /usr/lib/openssh/sftp-server

3. Pegue la siguiente configuración al final de la línea.

Subsystem sftp internal-sftp

Match Group sftpgroup
     ChrootDirectory %h
     X11Forwarding no
     AllowTCPForwarding no
     ForceCommand internal-sftp

Guarde la configuración y salga.

Configuración detallada:

  • En lugar de usar el subproceso 'sftp-server ', estamos usando el 'internal-sftp '.
  • El servidor SFTP habilitado para el grupo 'sftpgroup '.

4. Para aplicar una nueva configuración, reinicie el servicio ssh usando el siguiente comando.

sudo systemctl restart sshd

El servidor SFTP está listo y accesible, y se ejecuta en el mismo puerto que el servicio SSH.

Acceder al servidor SFTP

En el lado del cliente, usaremos la línea de comando sftp, que está instalada de forma predeterminada en la mayoría de las distribuciones de Linux. Pero también puede usar otro cliente de línea de comandos o un cliente FTP GUI como FileZilla , Pato cibernético , etc.

1. Para conectarse al servidor SFTP, ejecute el comando sftp como se muestra a continuación.

sftp [email protected]

Si su servidor SFTP y/o SSH se ejecuta en el puerto personalizado, puede usar el comando sftp como se muestra a continuación.

sftp -P PORT [email protected]

Escriba la contraseña para el 'sftpuser '.

2. Una vez que esté conectado al servidor SFTP, ejecute el siguiente comando.

Muestra el directorio de trabajo de la ruta actual y enumera todos los archivos y directorios disponibles.

pwd
ls

3. Suba un archivo local al servidor SFTP en el directorio '/ ', que resultará como 'permiso denegado ', porque es el directorio chroot.

put /path/to/file/on/local /

4. Cargue un archivo local en el directorio '/data/ ' en el servidor SFTP. Si su configuración es correcta, su archivo se cargará en '/data/ ' directorio.

put /path/to/file1/on/local1 /data/
put /path/to/file2/on/local /data/

5. Ahora verifique los archivos disponibles en '/data ' directorio usando el siguiente comando.

ls /data/

Y verá su archivo cargado en el servidor SFTP.

Conclusión

¡Felicidades! Ha configurado correctamente el servidor SFTP en el sistema Linux. Este tipo de configuración se puede aplicar en la mayoría de los sistemas Linux con OpenSSH instalado encima. Además, aprendió cómo configurar el directorio chroot para usuarios de SFTP y aprendió el comando básico del cliente sftp.


Ubuntu
  1. Cómo instalar y usar la pantalla de Linux, con comandos

  2. Cómo instalar y usar Hubot en Ubuntu Linux

  3. Cómo instalar y usar Flatpak en Linux

  4. Cómo instalar y configurar el servidor sftp en Ubuntu 20.04

  5. Cómo instalar y usar Traceroute en Linux

Cómo instalar y usar las herramientas de captura de pantalla de Ubuntu Linux

Cómo instalar y usar WinSCP en Ubuntu 20.04 Linux

Cómo instalar y usar ProtonVPN en Linux de escritorio

Cómo instalar y usar Flatpak en Linux

Cómo instalar y usar el IDE de Thonny Python en Linux

Cómo instalar y usar i3 Window Manager en Linux