Apuntes sobre Otras cosas

Cajón Desastre: Todo lo que no encaja en ninguna parte.

Modo pasivo, alternativas modernas, permisos y automatización

1. El modo pasivo (PASV)

1.1 El problema del modo activo

FTP usa dos conexiones TCP:

  • Control → cliente → servidor (puerto 21).
  • Datos → en modo activo, el servidor abre la conexión hacia el cliente.

En redes con firewall o NAT, esa segunda conexión entrante suele bloquearse, lo que provoca cuelgues al listar (ls) o transferir.

1.2 Cómo lo soluciona PASV

En modo pasivo, el cliente abre ambas conexiones (control y datos).

El servidor indica un puerto de datos y espera la conexión, en lugar de intentar iniciarla él.

1.3 Activar modo pasivo

En consola FTP clásica:

ftp> quote PASV
ftp> ls

En lftp:

set ftp:passive-mode on

En clientes gráficos, suele haber una casilla "Usar modo pasivo" en la configuración.

Hoy, la mayoría de clientes usan PASV por defecto, pero es útil saber qué es y cuándo activarlo manualmente.

2. Alternativas modernas y seguras

  • SFTP → estándar seguro sobre SSH.
  • FTPS → útil para compatibilidad con servidores antiguos que requieren FTP.
  • rsync sobre SSH → sincroniza directorios eficientemente.
  • scp → copia rápida de archivos vía SSH.
rsync -avz carpeta_local/ usuario@servidor.com:/ruta/remota/
scp archivo usuario@servidor.com:/ruta/remota/

4. Automatización de transferencias

4.1 Usando .netrc con FTP o lftp

Archivo .netrc en el home del usuario:

machine servidor.com
login tu_usuario
password tu_contraseña

Permisos:

chmod 600 ~/.netrc

Ejemplo de script:

ftp servidor.com <<EOF
cd /public_html
put index.html
bye
EOF

guarda eso como subir.sh y ejecuta

bash subir.sh

4.2 Automatizar con lftp y mirror

Puedes hacer lo mismo de forma mas moderna y segura, siguiendo el mismo sistema: crear un script con las instrucciones correspondientes y ejecutándolo.

Descargar un directorio completo:

lftp -u usuario sftp://servidor.com -e "mirror /remoto /local; bye"

Subir un directorio completo:

lftp -u usuario sftp://servidor.com -e "mirror -R /local /remoto; bye"

4.3 Tareas programadas con cron

Ejecutar cada noche a las 02:00 un backup vía SFTP:

0 2 * * * lftp -u usuario sftp://servidor.com -e "mirror -R /home/usuario/backup /backup_remoto; bye"

5. Configuración avanzada de lftp

5.1 Archivo de configuración ~/.lftprc

Crear un archivo de configuración para personalizar el comportamiento de lftp:

# Configuración de lftp
set ftp:passive-mode on
set ssl:verify-certificate no
set net:max-retries 3
set net:reconnect-interval-base 5
set net:timeout 30
set cmd:fail-exit yes

Algunas opciones útiles:

  • set ftp:passive-mode on → Usa siempre modo pasivo por defecto
  • set ssl:verify-certificate no → Omite verificación de certificados SSL (útil para certificados auto-firmados)
  • set net:max-retries 3 → Reintenta conexiones hasta 3 veces
  • set net:timeout 30 → Timeout de conexión en 30 segundos
  • set cmd:fail-exit yes → Sale con error si algún comando falla (útil en scripts)

5.2 Verificar espacio disponible

Antes de transferencias grandes, es útil verificar el espacio:

# Ver tamaño de archivos/directorios locales
du -sh carpeta_local/
du -sh archivo_grande.zip

# En sesión SFTP/FTP, algunos servidores soportan:
sftp> df -h        # Espacio libre en servidor (si está soportado)

6. Buenas prácticas

  • Usa siempre cifrado (SFTP, FTPS, rsync/SSH).
  • Evita credenciales en texto plano; si usas .netrc, protégelo con permisos 600.
  • No uses chmod 777 salvo en entornos de prueba.
  • Prueba scripts en entornos controlados antes de producción.
  • Verifica el espacio disponible antes de transferencias grandes.
TOP