Protocolos, clientes y uso básico
1. Protocolos de transferencia de archivos
Un protocolo es como un idioma común que cliente y servidor usan para comunicarse.
En este contexto tenemos tres principales:
- FTP (File Transfer Protocol)
- El más veterano, puerto 21.
- No cifra nada: datos y contraseñas viajan en texto plano.
- Hoy en día, solo recomendable en redes seguras o para servidores públicos de solo lectura.
- SFTP (SSH File Transfer Protocol)
- No es "FTP con cifrado" sino un protocolo distinto que se transporta dentro de SSH (puerto 22).
- Cifra todo el tráfico.
- Requiere que el servidor tenga servidor SSH habilitado.
- FTPS (FTP Secure)
- Es FTP "clásico" con una capa SSL/TLS, como HTTPS en la web.
- Usa puertos 21 o 990 según el modo (explícito o implícito).
- Compatible con muchos clientes gráficos y de consola.
2. Clientes: programas que hablan estos protocolos
Un cliente es el software que nos permite conectarnos a un servidor usando uno de estos protocolos.
Ejemplos:
ftp
→ cliente clásico de consola para protocolo FTP.sftp
→ cliente de consola para SFTP (incluido en OpenSSH).lftp
→ cliente avanzado de consola que soporta FTP, SFTP, FTPS y otros.- FileZilla, WinSCP → clientes gráficos multiplataforma.
Un cliente puede soportar varios protocolos, pero en cada conexión usa solo uno.
3. Conexión y diálogo: ejemplos prácticos
3.1 FTP clásico en Linux
$ ftp ftp.gnu.org
Connected to ftp.gnu.org.
220 GNU FTP server ready.
Name (ftp.gnu.org:usuario_local): anonymous
331 Please specify the password.
Password: tu_email@example.com
230 Login successful.
ftp> ls
-rw-r--r-- 1 ftp ftp 12345 Jan 01 12:00 README
ftp> get README
local: README remote: README
226 Transfer complete.
ftp> bye
3.2 SFTP (más seguro)
$ sftp usuario@servidor.com
usuario@servidor.com's password: ********
Connected to servidor.com.
sftp> ls
backup/
datos.txt
sftp> get datos.txt
Fetching /home/usuario/datos.txt to datos.txt
sftp> put informe.pdf
Uploading informe.pdf to /home/usuario/informe.pdf
sftp> bye
3.3 lftp con SFTP
$ lftp -u usuario sftp://servidor.com
Password: ********
lftp usuario@servidor.com:~> mirror backup backup_local
Transfiriendo 3 archivos...
lftp usuario@servidor.com:~> bye
4. Comandos esenciales
4.1 Comandos básicos para FTP/SFTP
ls # Lista directorio remoto
cd carpeta # Cambia directorio remoto
lcd carpeta # Cambia directorio local
pwd # Muestra directorio remoto actual
lpwd # Muestra directorio local actual
get archivo # Descarga archivo
put archivo # Sube archivo
mget *.txt # Descarga múltiples archivos
mput *.html # Sube múltiples archivos
mkdir carpeta # Crear carpeta remota (SFTP)
rm archivo # Borrar archivo remoto (SFTP)
bye # Cierra conexión
En SFTP: Puedes usar Tab para autocompletar rutas/archivos y flechas para historial de comandos.
4.2 SCP para transferencias directas
SCP permite copiar archivos sin sesión interactiva, usando comandos directos:
# Subir archivo al servidor
scp archivo.txt usuario@servidor:/ruta/remota/
# Descargar archivo del servidor
scp usuario@servidor:/ruta/archivo.txt ./
# Copiar carpeta completa (con -r)
scp -r carpeta_local/ usuario@servidor:/ruta/remota/
# Puerto SSH personalizado (nota: -P mayúscula)
scp -P 2222 archivo.txt usuario@servidor:/ruta/
# Comprimir antes de transferir (más eficiente)
tar czf archivos.tar.gz carpeta/
scp archivos.tar.gz usuario@servidor:/ruta/
# Luego descomprimir en el servidor
¿Cuándo usar cada uno?
- SFTP → Para navegar, explorar y gestionar archivos interactivamente
- SCP → Para transferencias rápidas y directas, ideal para scripts