Cómo transferir archivos de forma segura en Linux con sftp

Esta guía explorará cómo usar sftp (Protocolo de transferencia de archivos SSH), un programa de línea de comandos para transferir archivos de forma segura entre dos computadoras Linux a través de una red.

¿Qué es SFTP?

Antes de definir SFTP, es importante dar un paso atrás y comprender FTP (Protocolo de transferencia de archivos), el predecesor de SFTP.

FTP es un protocolo de comunicación de red que se utiliza para transferir archivos entre dos computadoras en una red, generalmente entre un servidor y un cliente.

SFTP es una versión más segura de FTP. Mantiene la seguridad encriptando los datos intercambiados entre dos computadoras utilizando el protocolo SSH (Secure Shell). FTP, por otro lado, transmite los datos como texto sin formato a través de una red.

SFTP también puede ayudarlo a usted y a su organización a lograr ciertas regulaciones de cumplimiento, como GDPR o CCPA, que requieren que los datos confidenciales se transfieran de la manera más segura posible.

Acceder a una PC remota

Linux principalmente le permite transferir archivos con SFTP a través del programa sftp . Sftp es un sólido software de línea de comandos que le permite transferir archivos a través de SSH de forma segura e interactiva.

Puede conectarse a un servidor remoto a través de sftp usando el siguiente comando. Recuerde reemplazar los marcadores de posición " username " y " ip-address-of-remote-pc " con el nombre de usuario y la dirección IP correctos del servidor en consecuencia.

 sftp username@ip-address-of-remote-pc

Ingrese la contraseña del servidor si se le solicita. Si el terminal lo saluda con el estado Conectado , significa que ha logrado establecer una conexión. El cursor parpadeante simplemente muestra que sftp está en modo interactivo.

Nota : Si no tiene un servidor remoto con el que interactuar, puede probar sftp localmente ejecutando el siguiente comando:

 sftp 127.0.0.1

Comandos sftp interactivos

Una vez que esté en el modo interactivo, hay varios comandos que puede usar para interactuar con la PC remota. Algunos de los comandos más importantes se describen a continuación. Tenga en cuenta que, a diferencia de la mayoría de los comandos de Linux, los comandos sftp no distinguen entre mayúsculas y minúsculas.

Listado de archivos en un servidor remoto

Una de las tareas más importantes es enumerar los archivos en un directorio para que tenga una idea de lo que desea transferir. También puede obtener información de archivos y carpetas de la PC remota, incluidos el tamaño y los permisos de los archivos almacenados.

Para listar archivos en su PC remota, puede usar el siguiente comando:

 ls

Puede usar la mayoría de los indicadores de comando ls como -a , -l , etc. y funcionarán bien.

Para listar archivos en su PC local de trabajo, puede usar el siguiente comando:

 lls

Listado del directorio de trabajo actual

También puede generar la ruta del directorio de trabajo actual en la PC remota con pwd . El comando pwd son las siglas de Present Working Directory .

 pwd

Para enumerar el directorio de trabajo actual en su PC local:

 lpwd

Utilice el método abreviado de teclado Ctrl + L para borrar la salida del terminal interactivo.

Carga de archivos a un servidor

Utilice el comando put para transferir archivos desde su PC local a un servidor remoto. Por ejemplo, para transferir una imagen ISO de Linux Manjaro desde su carpeta de inicio, use el siguiente comando. Puede utilizar el indicador -R para copiar un directorio de forma recursiva.

 put manjaro-xfce-21.0.7-minimal-210614-linux54.iso

La salida será similar a la que se muestra a continuación. Sftp mostrará el progreso de la transferencia de archivos en tiempo real.

Además, dado que no se ha especificado la ruta del archivo al servidor remoto, sftp colocará el archivo en una ruta similar a la de la PC local.

Si desea copiar varios archivos, use el comando mput en su lugar. Por ejemplo, para copiar todos los archivos de hojas de cálculo de Excel (XLS) en un directorio:

 mput *.xls

Para interrumpir o detener la transferencia de un archivo al servidor, puede usar el atajo de teclado Ctrl + C.

Descarga de archivos desde un servidor

Utilice el comando get para descargar archivos del servidor a su PC local. Por ejemplo, para copiar un archivo HTML llamado index.html desde el servidor, simplemente ejecute el siguiente comando:

 get index.html

Para obtener varios archivos del servidor, use el comando mget . Por ejemplo, para copiar todos los archivos HTML del directorio de trabajo actual del servidor a su sistema local:

 mget *.html

Cambiar los permisos de archivo

También puede cambiar los permisos de un archivo en el servidor remoto dentro de la terminal interactiva usando el comando chmod . Por ejemplo, para otorgar todos los permisos de acceso al archivo index.html , ejecute el siguiente comando:

 chmod 777 index.html

Salir de la sesión sftp

Para salir de la terminal interactiva sftp, simplemente escriba el comando bye . Alternativamente, también puede usar los comandos exit o quit .

Obtener ayuda de la línea de comandos

En lugar de memorizar comandos, es mejor que aprenda cómo obtener ayuda de la línea de comandos siempre que la necesite.

Sftp viene con buena documentación. Simplemente escriba cualquiera de los siguientes comandos para obtener ayuda dentro de la ventana de terminal interactiva.

 help?

Aplicaciones prácticas de SFTP

Esta guía le ha mostrado cómo transferir datos de forma segura e interactiva entre computadoras Linux usando el comando sftp. Si es un usuario de Raspberry Pi, también puede estar interesado en aprender diferentes formas de transferir datos desde su Raspberry Pi a una PC.