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.exitobye– 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 noen/etc/ssh/sshd_configdel servidor. - Limita los usuarios que pueden usar SFTP mediante el subsystem internal-sftp y el directive
ChrootDirectorypara 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
pingotelnet 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_keysdel usuario remoto y que los permisos de la carpeta.sshsean 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.


