El comando sftp en Linux: transferencia de archivos segura

Introducción

En el mundo actual, la seguridad de la información es primordial, especialmente cuando se trata de mover datos entre sistemas. El protocolo SFTP («SSH File Transfer Protocol») ofrece una solución robusta y cifrada para transferir archivos mediante el mismo canal seguro que proporciona SSH. En este artículo exploraremos en profundidad el comando sftp disponible en la mayoría de distribuciones Linux, desde su instalación hasta su uso avanzado, incluyendo trucos para automatizar transferencias y garantizar la confidencialidad de tus datos.

¿Qué es SFTP?

SFTP no es simplemente una versión segura de FTP; es un protocolo distinto que se ejecuta sobre el protocolo SSH (Secure Shell). A diferencia de FTP, que transmite credenciales y datos en texto plano, SFTP cifra tanto la autenticación como los datos transferidos, protegiéndolos contre interceptions y manipulaciones. Además, SFTP permite realizar operaciones de sistema de archivos como listar directorios, crear carpetas, eliminar archivos y cambiar permisos, todo dentro de una sesión segura.

Instalación del cliente SFTP

La mayoría de las distribuciones Linux incluyen el cliente sftp como parte del paquete openssh-client. Para verificar si está instalado, abre una terminal y ejecuta:

which sftp

Si no obtienes una ruta, puedes instalarlo con el gestor de paquetes de tu distribución:

  • En Debian/Ubuntu: sudo apt-get update && sudo apt-get install openssh-client
  • En Fedora: sudo dnf install openssh-clients
  • En Arch Linux: sudo pacman -S openssh

Una vez instalado, el comando estará disponible globalmente.

Conexión básica a un servidor SFTP

Para iniciar una sesión sftp necesitas conocer la dirección del servidor, el puerto (por defecto 22) y un usuario con permisos de acceso. La sintaxis básica es:

sftp usuario@servidor

Si el servidor usa un puerto distinto, especifícalo con la opción -P:

sftp -P 2222 usuario@servidor

Tras autenticarte (mediante contraseña o clave SSH), aparecerá el prompt sftp>, desde donde puedes ejecutar comandos.

Comandos más usados dentro de la sesión SFTP

Una vez dentro, el funcionamiento es similar a una shell de archivos. Algunos de los comandos más habituales son:

  • ls – lista el contenido del directorio remoto actual.
  • cd ruta – cambia al directorio remoto indicado.
  • lcd ruta – cambia al directorio local (en tu máquina).
  • get archivo – descarga un archivo del servidor al local.
  • mget patrón – descarga varios archivos que coincidan con un patrón (por ejemplo, mget *.log).
  • put archivo – sube un archivo local al servidor.
  • mput patrón – sube varios archivos locales.
  • mkdir directorio – crea un directorio en el servidor.
  • rm archivo – elimina un archivo remoto.
  • rmdir directorio – elimina un directorio vacío remoto.
  • rename viejo nuevo – renombra un archivo o directorio.
  • exit o bye – cierra la sesión.

Estos comandos pueden combinarse y se pueden usar con rutas absolutas o relativas.

Transferencia de archivos sin intervención manual

Para automatizar tareas, SFTP admite el modo batch. Primero crea un archivo de comandos (por ejemplo, batch.txt) con las instrucciones que deseas ejecutar, una por línea:

cd /var/www/html
put index.html
put style.css
exit

Luego ejecuta sftp con la opción -b:

sftp -b batch.txt usuario@servidor

Si deseas que la conexión use autenticación basada en claves SSH, asegúrate de que tu agente SSH tenga la clave cargada o especifica el archivo de clave con -i:

sftp -i ~/.ssh/id_rsa -b batch.txt usuario@servidor

Esta técnica es ideal para scripts de respaldo, despliegues o sincronización periódica mediante cron.

Consideraciones de seguridad

Aunque SFTP ya cifra la comunicación, es buena práctica reforzar la seguridad:

  • Usa autenticación por clave pública en lugar de contraseñas.
  • Desactiva el acceso root directo mediante la directiva PermitRootLogin no en /etc/ssh/sshd_config del servidor.
  • Limita los usuarios que pueden usar SFTP mediante el subsystem internal-sftp y el directive ChrootDirectory para crear jaulas.
  • Mantén actualizado el paquete OpenSSH para beneficiarte de los últimos parches de seguridad.
  • Registra las conexiones SFTP en /var/log/auth.log (Debian/Ubuntu) o /var/log/secure (RHEL/CentOS) para auditoría.

Solución de problemas comunes

Si la conexión falla, revisa estos puntos:

  • Verifica que el servidor SSH esté en ejecución: systemctl status sshd.
  • Comprueba la conectividad de red con ping o telnet servidor 22.
  • Asegúrate de que el puerto no esté bloqueado por un firewall (ufw, firewalld, iptables).
  • Si recibes Permission denied, confirma que el usuario tiene permiso para usar el subsystem sftp y que su shell esté configurado correctamente (a menudo se usa /usr/lib/openssh/sftp-server).
  • En caso de errores de clave, verifica que la clave pública esté en ~/.ssh/authorized_keys del usuario remoto y que los permisos de la carpeta .ssh sean 700 y del archivo 600.

Conclusión

El comando sftp es una herramienta esencial para cualquier administrador de sistemas o desarrollador que necesite transferir archivos de forma segura en entornos Linux. Su integración con SSH brinda cifrado robusto, autenticación flexible y una amplia gama de operaciones de sistema de archivos. Siguiendo las mejores prácticas descritas — autenticación por claves, limitación de privilegios y monitoreo de logs — puedes garantizar que tus transferencias sean tanto eficientes como a prueba de manipulaciones. Ahora que conoces su instalación, uso básico, automatización y ajustes de seguridad, estás listo para incorporar SFTP en tus flujos de trabajo diarios.

Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional para Francesc Roig francesc@vivaldi.net .

EspañolesEspañolEspañol