15 ejemplos de comandos SFTP en Linux

SFTP o Protocolo seguro de transferencia de archivos es una utilidad de transferencia remota segura de archivos basada en el Protocolo de transferencia de archivos (FTP).

El tráfico FTP no está cifrado y es inseguro, por lo que ha sido reemplazado en su mayoría por SFTP.

SFTP se ejecuta sobre el protocolo SSH de forma predeterminada en el puerto TCP 22 y ofrece el mismo conjunto de capacidades de seguridad y cifrado que SSH. El demonio SSH predeterminado que se ejecuta como parte del servidor OpenSSH en los sistemas Linux admite las funciones básicas del protocolo SFTP de forma predeterminada, aunque hay un software dedicado separado disponible como vsftpd que se puede configurar para obtener funciones y personalizaciones adicionales.

En este artículo, cubriremos el uso de SFTP desde la línea de comandos. Usaré un sistema Ubuntu, aunque los comandos enumerados aquí funcionarán en cualquier sistema Linux con cliente sftp.

Antes de ingresar a los comandos, debe saber que SCP está en desuso y, como alternativa, es bueno familiarizarse con el comando SFTP. Puedes hacer casi todo con SFTP que haces con SCP.

Copiando documentos

SFTP se puede utilizar como reemplazo de SCP (Copia segura) en algunos casos de uso admitidos. Uno de esos casos es el uso SCP para enviar o extraer archivos de un servidor remoto de una sola vez.

La sintaxis para cargando usar el comando SCP es así:

$ scp {local-path} {user}@{remote-host}:{remote-path}

Y para descargando Me gusta esto:

$ scp {user}@{remote-host}:{remote-file-path} {local-path}

De manera similar, podemos usar la siguiente sintaxis del comando sftp para cargar archivos a un servidor remoto:

$ sftp {user}@{host}:{remote-path} <<< $'put {local-path}'

A continuación se muestra una demostración carga de archivos usando sftp como una sola línea:

$ sftp [email protected]:/home/ftpuser/remote_test_dir <<< $'put /home/abhisheknair/new_file'
[email protected]'s password:
Connected to 192.168.1.231.
Changing to: /home/ftpuser/remote_test_dir
sftp> put /home/abhisheknair/new_file
Uploading /home/abhisheknair/new_file to /home/ftpuser/remote_test_dir/new_file
/home/abhisheknair/new_file                                                           100%    9     7.2KB/s   00:00
$

Para descargar un archivo de un servidor remoto, use la siguiente sintaxis de comando:

$ sftp {user}@{remote-host}:{remote-file-name} {local-file-name}

Aquí hay una demostración de cómo descargar un archivo en una línea usando sftp:

$ sftp [email protected]:/home/ftpuser/new_file1 /home/abhisheknair/new_local_dir
[email protected]'s password:
Connected to 192.168.1.231.
Fetching /home/ftpuser/new_file1 to /home/abhisheknair/new_local_dir/new_file1
/home/ftpuser/new_file1                                                               100%   12     3.6KB/s   00:00
$

También puede intercambiar la clave SSH por una autenticación sin contraseña.

Conexión a un servidor SFTP

Para iniciar una conexión SFTP, use el comando sftp con un nombre de usuario y el nombre o IP del host remoto. El puerto TCP predeterminado 22 debe estar abierto para que esto funcione o especifique explícitamente el puerto usando el indicador -oPort.

Me estoy conectando a un servidor SFTP con IP 192.168.1.231. La primera vez que se conecte a un servidor SFTP, se le pedirá que confirme la huella digital del servidor como SSH. Una vez confirmado escribiendo ‘‘ la conexión continúa y solicita la contraseña de un usuario.

En una conexión exitosa, se le mostrará el indicador sftp>.

$ sftp [email protected]
The authenticity of host '192.168.1.231 (192.168.1.231)' can't be established.
ECDSA key fingerprint is SHA256:k90E28Pfnjoiq1svFw18dA2mazweoCmR5Hqi8SH0mj0.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.231' (ECDSA) to the list of known hosts.
[email protected]'s password:
Connected to 192.168.1.231.
sftp>

Verificar versión

Puede verificar la versión de SFTP usando el comando de versión en el indicador de sftp.

sftp> version
SFTP protocol version 3
sftp>

Obteniendo ayuda

Para obtener ayuda sobre los comandos y la sintaxis disponibles para SFTP, use ‘?‘ o ‘ayuda‘.

sftp> ?
Available commands:
bye Quit sftp
cd path Change remote directory to 'path'
chgrp [-h] grp path Change group of file 'path' to 'grp'
chmod [-h] mode path Change permissions of file 'path' to 'mode'
chown [-h] 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 [-afpR] 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 [-afpR] local [remote] Upload file
pwd Display remote working directory
quit Quit sftp
reget [-fpR] remote [local] Resume download file
rename oldpath newpath Rename remote file
reput [-fpR] local [remote] Resume upload 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
sftp>

Mostrar directorio de trabajo

Cuando se conecta a un servidor remoto, puede mostrar el directorio de trabajo actual del sistema remoto usando el comando pwd.

sftp> pwd
Remote working directory: /home/ftpuser
sftp>

Para mostrar el directorio de trabajo actual del sistema local, use el comando lpwd.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp>

Listar archivos

Puede enumerar archivos en el directorio de trabajo remoto usando el comando ls.

sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Para listar archivos en el directorio de trabajo local, use el comando lls.

sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

Cambio de directorios

El cambio del directorio de trabajo remoto se puede hacer usando el comando cd. Consulte el ejemplo a continuación:

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> cd remote_test_dir
sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp>

Para cambiar el directorio de trabajo local, use el comando lcd. A continuación se muestra un ejemplo simple para mostrar el uso de LCD.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lcd testdir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp>

Subir archivos

Para cargar un solo archivo, use el comando put. Ver cómo subo local archivo1 al directorio de trabajo remoto usando poner mando. Puedo verificarlo usando ls comando que imprime el contenido del directorio de trabajo remoto.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> put file1
Uploading file1 to /home/ftpuser/file1
file1                                                                                                                                                                          100%    6     6.0KB/s   00:00
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Para cargar varios archivos de una sola vez, podemos usar el comando mput como se muestra a continuación. Yo uso mput con un patrón de expresión regular expediente[23] que básicamente carga archivo2 y archivo3 y salta archivo1 como ya se ha subido en el paso anterior. Puede utilizar cualquier comodín o expresión regular con entrada.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair
sftp> ls
file1            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> mput file[23]
Uploading file2 to /home/ftpuser/file2
file2                                                                                                                                                                          100%    6     6.5KB/s   00:00
Uploading file3 to /home/ftpuser/file3
file3                                                                                                                                                                          100%    6     5.3KB/s   00:00
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Descargar archivos

El archivo único que usa SFTP se puede descargar usando el comando get. Aquí hay un ejemplo donde descargué archivo_remoto4 utilizando sftp:

sftp> pwd
Remote working directory: /home/ftpuser/remote_test_dir
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file4
sftp> lls
file4
sftp> get remote_file4
Fetching /home/ftpuser/remote_test_dir/remote_file4 to remote_file4
/home/ftpuser/remote_test_dir/remote_file4                                                                                                                                     100%   13     5.2KB/s   00:00
sftp> lls
file4  remote_file4
sftp>

Para descargar varios archivos, utilice el comando mget. Estoy descargando aquí todos los archivos que coinciden con el patrón. archivo remoto* en el directorio de trabajo remoto a mi directorio de trabajo local. Finalmente uso el comando lls para ver los archivos descargados.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> lpwd
Local working directory: /home/abhisheknair/testdir
sftp> ls
remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> lls
file4  remote_file4
sftp> mget remote_file*
Fetching /home/ftpuser/remote_file1 to remote_file1
/home/ftpuser/remote_file1                                                                                                                                                     100%   12     5.9KB/s   00:00
Fetching /home/ftpuser/remote_file2 to remote_file2
/home/ftpuser/remote_file2                                                                                                                                                     100%   13     5.8KB/s   00:00
Fetching /home/ftpuser/remote_file3 to remote_file3
/home/ftpuser/remote_file3                                                                                                                                                     100%   13     7.3KB/s   00:00
sftp> lls
file4  remote_file1  remote_file2  remote_file3  remote_file4
sftp>

Crear el directorio

Se puede crear un nuevo directorio en un servidor remoto usando el comando mkdir.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> mkdir new_dir
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

De manera similar, si desea crear un nuevo directorio en el directorio de trabajo actual del sistema local desde el indicador de sftp, use el comando lmkdir.

sftp> lpwd
Local working directory: /home/abhisheknair
sftp> lls
bin  file1  file2  file3  lib  oci-scripts  sys_info.sh  test.tgz  testdir
sftp> lmkdir new_local_dir
sftp> lls
bin  file1  file2  file3  lib  new_local_dir  oci-scripts  sys_info.sh  test.tgz  testdir
sftp>

Eliminar directorio

Un directorio remoto vacío se puede eliminar usando el comando rmdir. Tenga en cuenta que si no está vacío, obtendrá un error.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            new_dir          remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rmdir new_dir
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp>

Remover archivo

Un archivo remoto se puede eliminar usando el comando rm.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_file3     remote_test_dir
sftp> rm remote_file3
Removing /home/ftpuser/remote_file3
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp>

Renombrar archivo

Un archivo remoto también se puede renombrar fácilmente usando el comando de cambio de nombre.

sftp> pwd
Remote working directory: /home/ftpuser
sftp> ls
file1            file2            file3            remote_file1     remote_file2     remote_test_dir
sftp> rename remote_file1 new_file1
sftp> ls
file1            file2            file3            new_file1        remote_file2     remote_test_dir
sftp>

Uso del sistema de archivos

Para mostrar las estadísticas del directorio o sistema de archivos actual que contiene ‘ruta’, use el comando df. Podemos usar el indicador -h para mostrar estadísticas en un formato legible por humanos. Tenga en cuenta que las estadísticas que se muestran son para el sistema de archivos respectivo del servidor SFTP remoto y no para el sistema de archivos de la máquina local.

sftp> df
        Size         Used        Avail       (root)    %Capacity
    17811456      1845472     15965984     15965984          10%
sftp> df -h
    Size     Used    Avail   (root)    %Capacity
  17.0GB    1.8GB   15.2GB   15.2GB          10%
sftp>

Salir de la sesión SFTP

Para salir de la sesión SFTP, use bye, exit, o salir del comando. Volverá al indicador de sistema operativo después de salir de SFTP.

sftp> exit
$

Conclusión

SFTP es una de las mejores opciones disponibles que es segura y fácil de usar. Ofrece características tanto de CLI como de GUI y es compatible con diferentes plataformas. Consulte la página del manual de sftp para obtener más información.

$ man sftp

Si está interesado en obtener más información, consulte este curso de Dominio de Linux de Udemy.

Botón volver arriba