Tutorial de sftp
Contenido
Introducción
sftp son las siglas de (Secure File Transfer Protocol) y es otra implementación del protocolo de transferencia de archivos sobre ssh (Secure Shell) similar a scp pero más nuevo y con un enfoque más independiente de la plataforma.
sftp hoy en día se usa principalmente como reemplazo de FTP, sobre todo en proveedores de hosting web, por su seguridad y porque las contraseñas no viajan sin cifrar como ocurre con FTP.
Sintaxis
Hay tres formas diferentes de invocar el programa sftp.
sftp [-Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsystem | sftp_server] host
sftp [usuario@]host[:archivo ...]
sftp [usuario@]host[:directorio[/]]
sftp -b batchfile [usuario@]host
La primera forma es muy similar al comando ftp, cuando se usa de esta manera se entra en modo interactivo, se pueden crear carpetas, navegar por la estructura y recuperar o enviar archivos al servidor.
La segunda forma funciona casi igual que scp, pedirá la contraseña (a menos que se use autenticación por clave pública) y una vez autenticado los archivos se descargarán o subirán según corresponda.
La tercera forma funciona casi igual que la primera pero permite empezar en una carpeta remota específica.
La cuarta forma permite especificar un archivo de lote con los comandos a ejecutar, en ese caso es necesario habilitar el acceso sin contraseña, para lo que se puede usar esta guía
Ejemplos
Modo interactivo de sftp
Descargar un archivo con sftp
Si se quiere recuperar un archivo de un servidor sftp, se puede hacer usando el modo interactivo de la siguiente manera. Primero hay que iniciar sesión en el servidor.
sftp usuario@servidor
Una vez conectado, se pueden listar archivos con el comando ls, o navegar por las carpetas con el comando cd, igual que en el shell. Para recuperar un archivo se usa este comando.
get /ruta/al/archivo/remoto
Descargar múltiples archivos con sftp
mget *.txt
Descargará todos los archivos .txt de la carpeta remota actual a la carpeta local actual.
mget *
Descargará todos los archivos de la carpeta remota actual a la carpeta local actual.
Subir un archivo con sftp
Si se quiere enviar un archivo al servidor, se puede usar algo similar.
put /ruta/al/archivo/local
Subir múltiples archivos a la vez
mput *.txt
Subirá todos los archivos .txt.
mput *
Subirá todos los archivos de la carpeta local actual a la carpeta remota actual.
Navegar en los lados local y remoto
En los ejemplos anteriores se asume que ya se está ubicado donde se quiere estar, en caso de necesitar cambiar la ubicación local o remota, también se puede hacer.
Listar archivos en el lado remoto
ls
Listar archivos en el lado local
lls
Cambiar carpeta en el lado remoto
cd /ruta/a/carpeta-remota
Cambiar carpeta en el lado local
lcd /ruta/a/carpeta-local
Crear carpetas en el lado remoto
mkdir carpeta
Crear carpetas en el lado local
lmkdir carpeta
Obtener ayuda
Se puede obtener el conjunto completo de comandos disponibles en el modo interactivo con el comando help, una vez conectado ejecutar:
help
Se obtendrá este conjunto de comandos:
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to 'mode'
chown own path Change owner of file 'path' to 'own'
df [-hi] [path] Display statistics for current directory or
filesystem containing 'path'
exit Quit sftp
get [-Ppr] remote [local] Download file
help Display this help text
lcd path Change local directory to 'path'
lls [ls-options [path]] Display local directory listing
lmkdir path Create local directory
ln [-s] oldpath newpath Link remote file (-s for symlink)
lpwd Print local working directory
ls [-1afhlnrSt] [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put [-Ppr] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
rename oldpath newpath Rename remote file
rm path Delete remote file
rmdir path Remove remote directory
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
Modo no interactivo de sftp
Se pueden descargar archivos con un solo comando usando el modo no interactivo:
Recuperar un solo archivo
sftp usuario@host:/ruta/al/archivo
Recuperar múltiples archivos
sftp usuario@host:/ruta/a/archivos/*
Esto traerá todos los archivos de la carpeta remota, si se quiere un tipo específico de archivos se puede usar comodines para acotar la selección.
sftp usuario@host:/ruta/a/archivos/*.txt
Traerá todos los archivos con extensión .txt.
Descargar múltiples archivos de forma recursiva
sftp -r usuario@host:/ruta/a/archivos/*
Ese comando copiará todos los archivos de la carpeta remota y sus subcarpetas con todo su contenido.
Windows
WinSCP
Cuando se trabaja en una máquina Windows la mejor opción para usar el protocolo sftp es WinSCP, que es un cliente de scp, sftp y ftp para Windows.
WinSCP es un cliente SFTP completo, y tiene muchas funcionalidades como:
- Sincronización completa — Esta función mantiene ambas carpetas, remota y local, sincronizadas, de modo que cualquier cambio que se realice en cualquiera de los extremos de la conexión se actualizará en el otro. La aplicación debe mantenerse abierta y conectada para que esta funcionalidad siga funcionando.
- Sincronización remota — Esta función mantiene solo el extremo remoto sincronizado con el local, de modo que cualquier cambio realizado en el lado local se actualizará en el lado remoto, pero no al revés. Es decir, cualquier cambio en el remoto no se actualizará en el local. Se puede decidir si eliminar o no los archivos remotos al iniciar la sincronización. Si se activa, cualquier archivo eliminado en local se eliminará en remoto, pero si no, solo se actualizarán los archivos nuevos o los cambios en los existentes.
- Arrastrar y soltar — También se puede usar la función de arrastrar y soltar para copiar archivos del remoto al local o viceversa.
Cyberduck
Otra herramienta GUI de código abierto para Windows es Cyberduck, publicada bajo la licencia GNU, se pueden hacer las mismas cosas con Cyberduck que con WinSCP, la principal diferencia es que Cyberduck no tiene la ventana de dos paneles, y debo decir que prefiero la ventana de dos paneles de WinSCP para navegar mejor por ambos lados de la conexión sftp.
Con Cyberduck hay que abrir el Explorador de Windows para copiar archivos y pegarlos luego en la ventana de Cyberduck, o se puede arrastrar y soltar de una ventana a la otra.
macOS
Siendo macOS un sistema operativo basado en Unix, ya se tienen tanto el cliente sftp como el servidor sftp (que es OpenSSH) instalados de serie desde la línea de comandos.
Por supuesto hay muchos clientes GUI disponibles para Mac.
De pago
Cliente de código abierto
El que uso yo es CyberDuck. Soporta conexiones a Amazon S3 además de SFTP, se puede arrastrar y soltar hacia y desde el Finder, se pueden mantener carpetas sincronizadas entre el Mac y el servidor OpenSSH remoto, y se pueden crear y eliminar archivos y carpetas.
Se puede hacer todo lo que está disponible desde la línea de comandos, pero usando una interfaz gráfica, lo que hace que trabajar con servidores sftp sea mucho más fácil.
Publicado originalmente el: 17 de enero de 2015
Última actualización: 25 de junio de 2026
Por: Guillermo Garron