Qué es y cómo utilizar SFTP (Protocolo de transferencia de archivos SSH)

FTP es el método estándar para transferir archivos u otros datos entre computadoras, pero se está volviendo cada vez más obsoleto, debido al entorno actual consciente de la seguridad. Afortunadamente, ahí es donde entra SFTP, que es particularmente útil para los usuarios de hosting VPS.

En esta guía, te mostraremos cómo usar SFTP para la transferencia segura de archivos, hablaremos sobre otros comandos útiles y explicaremos más sobre cómo funciona.

SFTP, o Secure File Transfer Protocol, es una forma mucho más segura de mover archivos. El protocolo SSH, admite el cifrado y otros métodos de seguridad utilizados para proteger mejor las transferencias de archivos.

Es el único protocolo seguro de transferencia de archivos que protege contra ataques en cualquier punto del proceso de transferencia de datos, lo que lo convierte en el protocolo preferido.

Durante la transferencia de archivos, todos los datos se dividen en paquetes y se envían a través de una única conexión segura.

La información confidencial se cifrará y se volverá ilegible cuando se transfiera entre el cliente y el servidor. En otras palabras, el contenido original (texto sin formato) será reemplazado por una cadena de caracteres incoherentes (texto cifrado).

Solo el destinatario con la clave de descifrado requerida podrá ver el contenido original. Esto evita cualquier acceso no autorizado durante la transferencia de archivos.

El protocolo de transferencia de archivos (FTP) tiene dos canales diferentes para intercambiar datos: el canal de comando y el canal de datos. Por el contrario, el protocolo SFTP tiene solo un canal cifrado donde los datos se intercambian en paquetes formateados cifrados.

¿Cómo conectarte usando SFTP?

SFTP es un subsistema de SSH. Por lo tanto, admite todos los métodos de autenticación SSH. Si bien es más fácil configurar y usar la autenticación de contraseña, es mucho más conveniente y seguro crear claves SSH para un inicio de sesión SFTP sin contraseña.

Una vez estés listo para avanzar, sigue los pasos a continuación para conectarte con SFTP:

  1. Verifica tu acceso SSH usando uno de estos comandos:
    ssh user@server_ipaddress
    ssh user@remotehost_domainname
  1. Una vez hecho esto, abandona la sesión si no se produjeron errores.
  2. Inicia una conexión SFTP con los siguientes comandos:
    sftp user@server_ipaddress
    sftp user@remotehost_domainname
  3. Si estás usando un puerto SSH personalizado, usa uno de estos comandos para cambiar el puerto SFTP:
    sftp -oPort=customport user@server_ipaddress
    sftp -oPort=customport user@remotehost_domainname
  4. Así es como debería verse:
    sftp -oPort=49166 user@31.220.57.32

Una vez que estés conectado, verás un mensaje SFTP.

Cómo transferir archivos usando SFTP

Aquí te mostraremos cómo transferir archivos remotos al sistema local usando SFTP y viceversa.

Consejo profesional

También puedes transferir tus archivos utilizando clientes SFTP, como WinSCP o FileZilla.

Transferencia de archivos remotos de un servidor al sistema local

Para empezar, verifica qué directorio de trabajo local y qué directorio remoto estás usando. Para hacer esto, usa estos comandos SFTP:

sftp> lpwd
Local directory: /LocalDirectory
sftp> pwd
Remote directory: /RemoteDirectory

Ahora, veamos cómo transferir un archivo desde un servidor remoto a tu máquina local usando el comando get. Aquí está la sintaxis básica del comando get:

get /RemoteDirectory/filename.txt

Por ejemplo, para copiar el archivo /etc/xinetd.conf desde el servidor remoto a tu máquina local, usarías:

get /etc/xinetd.conf

Una vez se complete la descarga, verás que el archivo xinetd.conf está en el directorio /user/home de tu máquina local.

Para descargar varios archivos con SFTP, usa el comando mget. Para pasar todos los archivos que tienen la extensión .conf de un directorio llamado /etc a tu directorio de trabajo actual, usarás el siguiente comando:

mget /etc/*.conf

Después de la descarga, encontrarás todos los archivos *.conf en el directorio /user/home de tu máquina local.

Transferencia de archivos desde la máquina local a un servidor remoto

Para copiar un archivo de la máquina local al servidor remoto, usa el comando get nuevamente. En este caso, la sintaxis del comando get será:

get file.txt /RemoteDirectory

Para mover el archivo example.txt de una máquina local a la máquina remota, ingresa el siguiente comando:

put /home/user-name/example.txt /root

Ahora encontraremos el archivo en el directorio raíz del servidor remoto. También puedes intentar transferir varios archivos con el comando mput. Funciona casi igual que mget:

mput /home/user-name/*.txt /root

Este comando movería todos los archivos con la extensión .txt en /home/user-name desde la máquina local al directorio remoto /root.

Consejo profesional

Ten en cuenta que para descargar y cargar los archivos con SFTP, deberás escribir el comando put o get y presionar la tecla TAB.

Comandos para navegar con SFTP

Algunos comandos se pueden usar para navegar a través de los servidores locales y remotos de manera más eficiente con SFTP. Son similares a los que usarías en la barra de comandos de Linux.

Por ejemplo, el comando pwd siempre es útil para saber en qué directorio de trabajo te encuentras actualmente.

sftp> pwd
Remote Directory: /RemoteDirectory

o

sftp> lpwd
Local Directory: /LocalDirectory

También puedes mostrar la lista de archivos y directorios que estás utilizando para el directorio remoto:

ls

Del mismo modo, para el directorio de trabajo local:

lls

Por ejemplo, el resultado se verá similar a esto:

Pictures     Templates     Media     Text.txt     Documents

Para cambiar de un directorio de trabajo remoto a otro directorio de trabajo local, ingresa los siguientes comandos:

cd nombre_del_directorio
lcd nombre_del_directorio

Finalmente, usa ! y exit para salir de los comandos, volver al shell local y salir de SFTP.

Conceptos básicos del mantenimiento de archivos mediante SFTP

Con SFTP, también puedes administrar directorios y archivos mediante comandos específicos.

Para verificar el espacio en disco del servidor remoto en gigabytes, usa la función df así:

df -h

A continuación, se muestra un ejemplo del resultado:

Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop29212p1   59G  2.5G   56G   5% /
none               1.5G     0  1.5G   0% /sys/fs/cgroup
none               1.5G     0  1.5G   0% /dev
tmpfs              1.5G     0  1.5G   0% /dev/shm
tmpfs              1.5G  568K  1.5G   1% /run
tmpfs              308M     0  308M   0% /run/user/0

Utiliza el comando mkdir para crear un nuevo directorio en el servidor local y remoto:

mkdir nombre_del_directorio
lmkdir nombre_del_directorio

Puedes eliminar un directorio del servidor remoto usando el comando rmdir:

rmdir nombre_del_directorio

Así mismo, cambiar el nombre de un archivo remoto también es bastante sencillo:

rename viejo_nombredelarchivo nuevo_nombredelarchivo

Si deseas eliminar un archivo remoto, usa el comando rm:

rm nombredearchivo

Si bien el comando chown se usa para reemplazar al propietario de un archivo:

chown userid nombredearchivo

userid puede ser un nombre de usuario o un ID de usuario numérico. Por ejemplo:

chown UsuarioUno NombredeArchivo
chown 1234 NombredeArchivo

chgrp se usa para cambiar el propietario del grupo de un archivo:

chgrp groupid nombredearchivo

Por ejemplo:

chgrp NuevoGrupo ArchivoEjemplo

Finalmente, necesitarás usar el comando interactivo chmod para cambiar el permiso de un archivo:

chmod 764 NombredeArchivo

En este ejemplo, el valor de tres dígitos representa el usuario, el grupo y otros usuarios del archivo.

En cuanto a los permisos para leer (r), escribir (w) y ejecutar (x), sus valores son 4, 2, 1, respectivamente. 0 también se puede utilizar para no otorgar permisos.

Para asignar permisos, simplemente calcula los valores totales para cada clase de usuario. A continuación, te mostramos un desglose del ejemplo:

chmod ugo NombredeArchivo
# u representa al Usuario que podrá leer, escribir y ejecutar el archivo.
# g es para Grupos, aquí le hemos dado permiso para escribir y ejecutar el archivo.
# o es que Otros solo podrán leer el archivo.

Lista de comandos SFTP útiles

Si necesitas una hoja de comandos, aquí hay una lista de todos los comandos SFTP disponibles. Puedes encontrar esta lista tú mismo simplemente ingresando los comandos help o ?, ambos brindan el mismo resultado.

bye                            Salir de sftp
cd path                        Cambiar el directorio remoto a ‘path'
chgrp [-h] grp path            Cambiar el grupo del archivo 'path' a 'grp'
chmod [-h] mode path           Cambiar los permisos del archivo 'path' a 'mode'
chown [-h] own path            Cambiar el propietario del archivo 'path' a 'own' (propio)
df [-hi] [path]                Muestra las estadísticas del directorio actual o
                               sistema de archivos que contienen 'path'
exit                           Salir de sftp
get [-afpR] remote [local]     Descargar archivo
help                           Mostrar este texto de ayuda
lcd path                       Cambiar el directorio local a 'path'
lls [ls-options [path]]        Muestra la lista del directorio local
lmkdir path                    Crear directorio local
ln [-s] oldpath newpath        Link a archivo remoto (-s para symlink)
lpwd                           Mostrar directorio de trabajo local
ls [-1afhlnrSt] [path]         Muestra la lista de directorios remotos
lumask umask                   Establece la umask local en 'umask'
mkdir path                     Crear directorio remoto
progress                       Alternar la visualización del medidor de progreso
put [-afpR] local [remote]     Cargar archivo
pwd                            Mostrar directorio de trabajo remoto
quit                           Salir de sftp
reget [-fpR] remote [local]    Reanudar archivo de descarga
rename oldpath newpath         Renombrar archivo remoto
reput [-fpR] local [remote]    Reanudar archivo de carga
rm path                        Eliminar archivo remoto
rmdir path                     Eliminar directorio remoto
symlink oldpath newpath        Archivo remoto de symlink
version                        Muestra la versión SFTP
!command                       Ejecutar 'command' en el shell local
!                              Escapar al Shell local

Conclusión

Eso es prácticamente todo en cuanto a qué es SFTP y cómo utilizarlo para la transferencia segura de archivos. Esperamos que este tutorial te haya resultado útil.

Si tienes más preguntas, no dudes en dejar un comentario a continuación.

SFTP – Preguntas frecuentes

A continuación algunas de las preguntas más comunes sobre el protocolo de transferencia de archivos SFTP. 

¿Qué relación hay entre FTPS y SSL?

FTPS es una extensión del protocolo FTP (File Transfer Protocol) que utiliza SSL (Secure Sockets Layer) para encriptar las transferencias de archivos, proporcionando así una capa adicional de seguridad en las comunicaciones entre el cliente y el servidor.

¿Cuál es el puerto de SFTP?

El puerto estándar utilizado por SFTP para establecer una conexión segura es el 22. Este puerto es el mismo utilizado por SSH, ya que SFTP se basa en las capacidades de seguridad de SSH para asegurar las transferencias de archivos.

Author
El autor

Deyimar A.

Deyi es una entusiasta del marketing digital, con experiencia en diseño de páginas web, creación de contenido, copywrite y SEO. Forma parte del equipo de SEO & Localization de Hostinger. En su tiempo libre, le gusta desarrollar proyectos, leer un libro o ver una buena película.