Tutorial de sftp

Contenido

  1. Introducción
  2. Sintaxis
  3. Ejemplos
  4. Windows
  5. macOS

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:

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