El comando ftp en Linux: transferencia de archivos clásica

Introducción

En los sistemas tipo Unix, el protocolo FTP (File Transfer Protocol) ha sido durante décadas la forma más sencilla de mover archivos entre equipos. Aunque hoy existen alternativas más seguras como SFTP o rsync, FTP sigue presente en muchos servidores, dispositivos embebidos y scripts de automatización debido a su bajo consumo de recursos y su amplio soporte. Este artículo revisa el cliente ftp disponible en Linux, explica su funcionamiento, muestra los comandos más útiles y brinda consejos para usarlo de forma segura y eficiente.

¿Qué es FTP y cómo funciona?

FTP funciona mediante dos canales TCP: un canal de control que lleva los comandos y las respuestas, y un canal de datos que transporta el contenido de los archivos. Cuando el cliente se conecta al puerto 21 del servidor, primero se autentica con un nombre de usuario y una contraseña (o de forma anónima) y luego puede enviar órdenes como LIST, RETR o STOR. El canal de datos puede abrirse en modo activo, donde el servidor inicia la conexión al cliente, o en modo pasivo, donde el cliente abre la conexión al servidor, lo que resulta más amigable con firewalls y NAT. Aunque la información viaja en texto plano, la simplicidad del protocolo lo ha mantenido vigente en entornos donde la confidencialidad no es un requisito crítico.

Instalación del cliente ftp en Linux

La mayoría de las distribuciones incluyen el paquete llamado ftp. En Debian y sus derivados se instala con:

  • sudo apt update && sudo apt install ftp

En Red Hat, CentOS y Fedora:

  • sudo dnf install ftp

En openSUSE:

  • sudo zypper install ftp

En Arch Linux y derivados:

  • sudo pacman -S ftp

Tras la instalación, basta con escribir ftp en la terminal para entrar al modo interactivo o indicar directamente el host: ftp usuario@ejemplo.com. Si se desea evitar el intento de login automático, se puede añadir la opción -n y proporcionar usuario y contraseña dentro de la sesión mediante el comando user.

Uso básico del comando ftp

Una vez conectado, el prompt cambia a ftp>. Entre los comandos más frecuentes se encuentran:

  • ls o dir: muestra el contenido del directorio remoto.
  • cd: cambia de directorio en el servidor.
  • lcd: cambia de directorio en la máquina local.
  • get nombre: descarga un archivo del remoto al local.
  • mget patrón: descarga varios archivos que coincidan con un patrón (por ejemplo, mget *.log).
  • put nombre: sube un archivo local al remoto.
  • mput patrón: sube varios archivos usando comodines.
  • delete nombre: elimina un archivo en el servidor.
  • rename origen destino: renombra o mueve un archivo dentro del servidor.
  • bye o quit: cierra la sesión y vuelve al shell.

Para evitar que el cliente pregunte por cada archivo al usar mget o mput, se puede especificar la opción -i antes de iniciar la sesión o bien usar el comando prompt dentro de ftp para desactivar la interacción. Asimismo, el comando binary establece el modo de transferencia binaria, esencial cuando se mueven archivos ejecutables, imágenes o archivos comprimidos, mientras que ascii se usa para archivos de texto y puede realizar conversiones de fin de línea según el sistema.

Opciones y trucos avanzados

El cliente ftp acepta varias opciones de línea de comandos que modifican su comportamiento:

  • -d: activa el modo depuración, mostrando todo el intercambio de paquetes de control y datos, útil para depurar problemas de conexión.
  • -g: desactiva la expansión de comodines en el argumento local, evitando que el shell interprete caracteres como * o ? antes de que ftp los vea.
  • -i: desactiva la interacción durante transferencias múltiples, equivalente a ejecutar prompt dentro de la sesión.
  • -n: inhibe el intento de login automático, obligando al usuario a proporcionar credenciales mediante el comando user.
  • -v: modo verboso, muestra respuestas del servidor durante la sesión.

Para transferir un árbol de directorios completo, ftp no dispone de un comando recursivo integrado. Una estrategia habitual es crear un script que obtenga la lista remota con ls, la procese con awk o while read y luego ejecute get o put para cada entrada. Otro enfoque es utilizar herramientas como lftp o wget con sus opciones de espejado, que sí soportan recursividad y pueden reintentar transferencias fallidas.

En entornos donde se requiere automatización, se puede crear un archivo .netrc que almacene login y contraseña de forma segura (con permisos 600) y entonces invocar ftp sin necesidad de escribir la contraseña en la línea de comandos. Asimismo, se pueden usar variables de entorno como FTP_PASSIVE para forzar el modo pasivo sin tener que teclear passive cada vez.

Seguridad y alternativas modernas

El principal límite de FTP es que tanto las credenciales como los datos viajan sin cifrado, lo que los hace susceptibles a sniffing en redes no confiables. Para mitigar este riesgo sin abandonar FTP se pueden aplicar las siguientes técnicas:

  • Tunelar la conexión a través de SSH: se abre un túnel local (ssh -L 2121:servidorftp.com:21 usuario@hostssh) y luego se conecta el cliente ftp a localhost:2121.
  • Envolver FTP en TLS usando stunnel o stud, obteniendo FTPS (FTP over SSL/TLS), que cifra el canal de control y, opcionalmente, el de datos.
  • Restringir el acceso al servicio FTP a direcciones IP confiables mediante firewalls o TCP wrappers.

Sin embargo, la práctica recomendada hoy es migrar a protocolos diseñados para seguridad desde el origen:

  • SFTP (SSH File Transfer Protocol), que opera sobre el mismo canal cifrado de SSH y no requiere puertos adicionales.
  • SCP, basado también en SSH, adecuado para copiar archivos individuales.
  • Rsync sobre SSH, que además permite transferencias incrementales y compresión bajo demanda.

En dispositivos embebidos, routers o sistemas legacy donde el overhead de SSH es prohibitivo, FTP sigue siendo una opción viable siempre que la red esté físicamente protegida o se utilice una VPN.

Conclusión

El comando ftp en Linux constituye una herramienta clásica, ligera y ampliamente disponible para la transferencia de archivos. Conocer sus comandos básicos, las opciones de no‑interacción y depuración, y las formas de automatizar su uso mediante scripts o archivos .netrc permite aprovecharlo en escenarios donde la simplicidad y la compatibilidad son primordiales. Cuando la confidencialidad y la integridad de la información son críticas, basta con añadir una capa de cifrado mediante tunneling o FTPS, o bien pasar a alternativas como SFTP o rsync sobre SSH. De esta forma, el conocimiento de FTP sigue siendo una pieza valiosa del repertorio de cualquier administrador o desarrollador que trabaje en entornos Unix/Linux.

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

EspañolesEspañolEspañol