Dominando SFTP desde la Línea de Comandos: Transferencia Segura de Archivos

SFTP, que significa Protocolo de Transferencia de Archivos SSH o Protocolo de Transferencia Segura de Archivos, es un protocolo independiente empaquetado con SSH que funciona de forma similar pero a través de una conexión segura. Se ejecuta por defecto sobre el protocolo SSH en el puerto TCP 22 y ofrece el mismo conjunto de capacidades de seguridad y encriptación que SSH. En casi todos los casos, es preferible usar SFTP, en vez de FTP, debido a sus características de seguridad subyacentes y a su capacidad para aprovechar una conexión SSH. El protocolo de transferencia de archivos (FTP) tiene dos canales diferentes para intercambiar datos: el canal de comando y el canal de datos. Por el contrario, el protocolo SFTP tiene solo un canal cifrado donde los datos se intercambian en paquetes formateados cifrados.

El correo electrónico fue enviado con éxito. SFTP es una de las mejores opciones disponibles que es segura así como fácil de usar. Ofrece características CLI así como GUI y es compatible con diferentes plataformas. Si puede conectarse al equipo usando SSH, habrá completado todos los requisitos necesarios para usar SFTP para administrar archivos. Si está acostumbrado a utilizar FTP o SCP para realizar sus transferencias, SFTP es una buena forma de aprovechar las ventajas de ambos.

Interfaz de línea de comandos de SFTP

¿Qué es SFTP y por qué es Importante?

SFTP (Secure File Transfer Protocol) es una forma mucho más segura de mover archivos. Es el único protocolo seguro de transferencia de archivos que protege contra ataques en cualquier punto del proceso de transferencia de datos, lo que lo convierte en el protocolo preferido. Durante la transferencia de archivos, todos los datos se dividen en paquetes y se envían a través de una única conexión segura. La información confidencial se cifrará y se volverá ilegible cuando se transfiera entre el cliente y el servidor. En otras palabras, el contenido original (texto sin formato) será reemplazado por una cadena de caracteres incoherentes (texto cifrado). Solo el destinatario con la clave de descifrado requerida podrá ver el contenido original. Esto evita cualquier acceso no autorizado durante la transferencia de archivos.

SFTP es una evolución del tradicional FTP, diseñado para garantizar una transferencia de archivos más segura y fiable. A diferencia del FTP, que transmite datos sin cifrado y expone información crítica, SFTP utiliza el protocolo SSH (Secure Shell) para proteger todos los datos que se transfieren, incluidos los archivos y las credenciales. Este protocolo es en especial útil para administradores de sitios web y cualquier persona que necesite intercambiar archivos confidenciales o trabajar en entornos donde la seguridad en WordPress es prioritaria. Aunque puede sonar complicado, la realidad es que SFTP es fácil de usar y solo requiere una conexión SSH y un cliente SFTP para funcionar. Este protocolo se ha vuelto la opción estándar para quienes quieren que sus datos viajen de forma segura por internet. Es en especial popular en servidores de hosting y proyectos que manejan información sensible. Así que, si nos preocupa la seguridad de nuestras transferencias, SFTP es una solución ideal.

En la comparación FTP vs. SFTP, el protocolo SFTP es claramente la mejor opción. Basado en FTP, SFTP utiliza procedimientos criptográficos para el cifrado de datos. Por ello, se requieren componentes adicionales como Secure Shell (SSH) para su instalación.

Conexión a un Servidor SFTP desde la Línea de Comandos

Para iniciar una conexión SFTP, utilice el comando sftp con un nombre de usuario y el nombre o IP del host remoto. Por ejemplo, si se está conectando a un servidor SFTP con la IP 192.168.1.231 y su nombre de usuario es usuario, el comando sería:

sftp [email protected]

La primera vez que se conecte a un servidor SFTP, se le pedirá que confirme la huella digital del servidor como SSH. Se le presentará un mensaje similar a: "¿Está seguro de que desea continuar conectándose (sí/no/[huella digital])?". Debe introducir yes o la huella digital para continuar.

Confirmación de huella digital SSH

De forma predeterminada, SFTP utiliza el protocolo SSH para autenticarse y establecer una conexión segura. Aunque las contraseñas son fáciles de usar y se configuran de forma predeterminada, se recomienda crear claves SSH y transferir su clave pública a cualquier sistema al que necesite acceder.

Navegación y Gestión de Archivos en SFTP

Una vez conectado, se encontrará en un subshell interactivo de SFTP. Aquí hay algunos de los comandos más útiles para navegar y gestionar archivos:

Comandos de Navegación

  • pwd: Muestra el directorio de trabajo actual en el sistema remoto.
    • Ejemplo: pwd
  • ls: Lista los archivos y directorios en el directorio actual del sistema remoto. Puede usar la bandera -l para obtener una vista detallada y -a para mostrar archivos ocultos.
    • Ejemplo: ls -la
  • cd <directorio>: Cambia el directorio de trabajo remoto.
    • Ejemplo: cd /var/www/html
  • lcd <directorio>: Cambia el directorio de trabajo local. Esto afecta a dónde se descargarán los archivos o de dónde se subirán.
    • Ejemplo: lcd /home/usuario/descargas

F _ 3 - 5 / Servidor SFTP - Listar los archivos de una ruta remota en un servidor SFTP

Comandos de Transferencia de Archivos

  • put <archivo_local>: Sube un solo archivo desde su máquina local al directorio de trabajo remoto actual.
    • Ejemplo: put mi_archivo.txt
  • mput <patrón_archivo>: Sube varios archivos a la vez utilizando un patrón de expresión regular.
    • Ejemplo: mput *.jpg (Sube todos los archivos con extensión .jpg)
    • Ejemplo: mput file[23] (Sube file2 y file3)
  • get <archivo_remoto>: Descarga un solo archivo desde el directorio de trabajo remoto actual a su directorio de trabajo local actual.
    • Ejemplo: get archivo_remoto.zip
  • mget <patrón_archivo>: Descarga varios archivos a la vez utilizando un patrón de expresión regular.
    • Ejemplo: mget archivo_remoto* (Descarga todos los archivos que coinciden con el patrón)

Comparación visual de Put y Get en SFTP

Comandos de Gestión de Directorios y Archivos

  • mkdir <nombre_directorio>: Crea un nuevo directorio en el sistema remoto.
    • Ejemplo: mkdir nuevo_directorio
  • lmkdir <nombre_directorio>: Crea un nuevo directorio en el sistema local.
    • Ejemplo: lmkdir nuevo_directorio_local
  • rmdir <nombre_directorio>: Elimina un directorio remoto vacío.
    • Ejemplo: rmdir directorio_vacio
  • rm <nombre_archivo>: Elimina un archivo en el sistema remoto.
    • Ejemplo: rm archivo_obsoleto.log
  • rename <viejo_nombre> <nuevo_nombre>: Renombra un archivo en el sistema remoto.
    • Ejemplo: rename reporte_antiguo.txt reporte_final.txt
  • chmod <permisos> <nombre_archivo>: Cambia los permisos de un archivo en el sistema remoto. Es importante notar que SFTP utiliza UID (User ID) en lugar de nombres de usuario para chown y chgrp, y no acepta nombres de usuario directamente para chmod. Los permisos se especifican en formato octal (ej. 755, 644).
    • Ejemplo: chmod 764 mi_script.sh
  • chown <userid> <nombre_archivo>: Cambia el propietario de un archivo en el sistema remoto. userid puede ser un nombre de usuario o un ID numérico.
    • Ejemplo: chown 1001 mi_archivo_importante
  • chgrp <groupid> <nombre_archivo>: Cambia el grupo propietario de un archivo en el sistema remoto. groupid puede ser un nombre de grupo o un ID numérico.
    • Ejemplo: chgrp nuevo_grupo mi_documento.pdf

Comandos de Información del Sistema

  • df: Muestra las estadísticas del directorio actual o del sistema de archivos que contiene la ruta.
    • Ejemplo: df -h (La bandera -h muestra las estadísticas en un formato legible por humanos.)

Salida del comando df -h en SFTP

Comandos Locales y Shell Escape

SFTP proporciona formas de interactuar con su sistema de archivos local sin salir de la sesión SFTP.

  • ! <comando_local>: Ejecuta un comando en su shell local. El signo de exclamación se utiliza como prefijo para indicar que el comando debe ejecutarse en el sistema local.
    • Ejemplo: ! ls -l (Lista los archivos en su directorio local actual.)
    • Ejemplo: ! mkdir mi_directorio_local

Actualmente, hay un error en algunas versiones de OpenSSH que puede impedir que ciertos comandos locales funcionen correctamente dentro de SFTP. Para resolver problemas con comandos locales que no funcionan como se espera, ejecutar el comando ! antes de un comando del shell local es la solución general.

Comandos Útiles y Ayuda

  • help: Muestra un resumen de ayuda con todos los comandos disponibles en SFTP. Este es el comando más útil para familiarizarse con las capacidades de SFTP.
    • Ejemplo: help
  • bye, exit, o quit: Salen de la sesión SFTP y cierran la conexión.

Consideraciones Adicionales y Seguridad

Ubuntu es una plataforma segura y fiable para instalar un servidor SFTP. La distribución Linux ofrece herramientas y paquetes integrados que puedes utilizar para SFTP. Para instalar un servidor FTP compatible con SFTP, primero debes comprobar si OpenSSH está instalado. Por defecto, los paquetes ya están disponibles en Ubuntu.

La creación de un directorio chroot crea una sandbox para los procesos en ejecución. Esto permite al usuario SFTP subir archivos al subdirectorio data, pero solo tiene derechos limitados en el directorio sftpuser.

Para aumentar la seguridad:

  • Usa contraseñas largas y únicas.
  • Elimina los accesos que ya no necesites.
  • Considera el uso de claves SSH en lugar de contraseñas para una autenticación más segura.

Si estás acostumbrado a utilizar FTP o SCP, SFTP ofrece una alternativa más segura y robusta, aprovechando la encriptación inherente de SSH. La transferencia de archivos remotos de un servidor al sistema local o viceversa se realiza de manera segura, protegiendo la información sensible.

Asegúrate de que el nombre de usuario, la contraseña, el nombre del servidor y el puerto (generalmente 22) sean correctos. Si experimentas problemas de conexión, verifica que SFTP esté habilitado y configurado correctamente en el servidor.

tags: #generate #repositorio #sftp #command #line