Cómo usar el comando SFTP en Linux

Cómo usar el comando SFTP en Linux

Este tutorial explica cómo conectar y transferir archivos a través del protocolo SFTP en Linux, así como asegurando medidas de seguridad.

El sftp El comando es una de las herramientas más útiles para cada usuario de la red, incluidos los usuarios nacionales. Este comando también se puede implementar en los sistemas de Windows, lo que lo hace atractivo para cada tipo de red.

Esta es una de las principales herramientas de línea de comandos para compartir de forma segura los archivos entre computadoras. Además, para descargar y cargar archivos y directorios, el usuario puede cambiar de forma remota, eliminar y cambiar el nombre de archivos y más.

SFTP es un comando que definitivamente mejorará la experiencia de la red desde la línea de comando.

Después de leer este artículo y aplicar ejemplos (también se pueden reproducir en una máquina virtual), el lector sabrá cómo configurar los sistemas Linux para transferir archivos con el comando SFTP, tanto en modo interactivo como en línea de comandos.

El contenido es válido para todas las distribuciones de Linux e incluye capturas de pantalla de escenarios reales, lo que facilita a todos los lectores comprender cómo se aplican los comandos independientemente del nivel de conocimiento anterior.

Breve introducción a sftp

Anteriormente FTP (Protocolo de transferencia de archivo) era el único método para transferir archivos entre clientes y servidores o entre dos dispositivos de red.

Los usuarios solían cargar todos los archivos de descarga de los servidores FTP con permisos para leer y escribir en los directorios permitidos.

Pero el protocolo FTP sufrió vulnerabilidades de alto riesgo y fue reemplazado por protocolos más nuevos y seguros. Dos ejemplos ampliamente conocidos son SCP (protocolo de copia segura) y SFTP (protocolo de transferencia de archivo seguro). SFTP es uno de los reemplazos más populares para el protocolo FTP.

Al igual que FTP, SFTP se puede usar a través de un modo de texto interactivo o ejecutando comandos únicos. Este tutorial explica ambas técnicas.

Requisitos anteriores para usar SFTP

El sftp El protocolo requiere ssh (Secure Shell) para instalar y ejecutar en el servidor que desea descargar archivos o cargar archivos a.

Si su servidor ya tiene el SSH en ejecución, puede saltar a la siguiente sección SFTP.

En las distribuciones de Linux con sede en Debian, SSH se puede instalar utilizando el apto Manager de paquetes como se muestra en la captura de pantalla a continuación.

sudo apt install ssh

En las distribuciones de Linux basadas en Redhat, SSH se puede instalar ejecutando el siguiente comando:

DNF Instalar OpenSsh-server

Una vez instalado, en el servidor al que desea conectarse, inicie el servicio con el systemctl Comando como se muestra a continuación (distribuciones basadas en Debian).

sudo systemctl iniciar ssh

Para comenzar el servicio SSH en distribuciones basadas en Redhat, ejecute:

sudo systemctl inicio sshd

Cómo utilizar sftp en modo interactivo

Esta sección cubre el sftp Uso del modo interactivo.

El único comando que se ejecuta para acceder al sftp servidor antes de obtener el sftp El símbolo del sistema es la solicitud de conexión, que tiene la sintaxis similar a ssh y SCP.

El siguiente ejemplo describe la sintaxis correcta, donde <Usuario> debe reemplazarse con un usuario existente en el servidor y <Servidor IP> con el host del servidor o la dirección IP.

sftp @

En la captura de pantalla a continuación, el usuario local Linux-Hint3 se conecta como usuario remoto Linuxhint al servidor con dirección IP 192.168.0.103.

sftp [email protected]

La primera vez que el usuario se conecta al servidor, se le solicitará que confirme la conexión. El usuario debe escribir "", prensa INGRESAR y llena la contraseña.

Una vez que el usuario se conecta, el servidor devolverá un SFTP> símbolo del sistema donde el usuario puede ejecutar el sftp comandos.

El sftp El modo interactivo permite a los usuarios interactuar tanto con los sistemas locales y remotos.

Los comandos normales de Linux impacto en el servidor. Comandos que comienzan con un "l"Se ejecutan en el sistema local.

Por ejemplo, si el usuario ejecuta el pwd Comando, mostrará el directorio de trabajo actual remoto. Pero si el usuario ejecuta el LPWD, Mostrará el directorio actual local.

Por defecto, el directorio remoto local es el directorio de inicio del usuario remoto, excepto en algunos casos como el siguiente ejemplo, en el que el usuario remoto no tiene un directorio de inicio.

En la captura de pantalla a continuación, el pwd El comando se ejecuta para mostrar el directorio de trabajo actual remoto.

pwd

Entonces, LPWD se ejecuta para mostrar el directorio de trabajo actual local.

LPWD

Como puede ver en la captura de pantalla anterior, el directorio de trabajo actual de corriente remota es el directorio raíz (porque el Linuxhint4 El usuario remoto no tiene un directorio de inicio) y el directorio de trabajo local es el hogar local.

Si el usuario ejecuta el LS (Lista) Comando, mostrará archivos y directorios remotos dentro del directorio de trabajo actual.

LS

Ejecutando LLS (Lista local), el comando mostrará archivos y directorios dentro del directorio de trabajo actual actual.

Con el cd Comando (Cambiar directorio), el usuario puede moverse entre directorios remotos. Con el lcd Comando (Cambiar localmente), el usuario puede moverse entre directorios locales, como se muestra en la siguiente figura.

La sintaxis para descargar un archivo del servidor es el siguiente:

conseguir

O

conseguir

En el ejemplo a continuación, el usuario descarga el archivo llamado archivo10 y luego corre LLS (Lista local) Confirmar que el archivo se descargó correctamente.

Obtener archivo10

Para descargar directorios, la sintaxis es casi la misma excepto para el -riñonal bandera como se muestra a continuación.

Obtener -r

O

Obtener -r

En el ejemplo a continuación, el usuario descarga un directorio nombrado Directorio1.

Get -R Directory1

Para cargar archivos, la sintaxis es la siguiente:

poner

En el ejemplo práctico a continuación, el usuario carga un archivo llamado <archivo>

Para cargar directorios, simplemente agregue el -riñonal bandera.

Poner -r

O

poner -r

Los usuarios pueden eliminar archivos también de forma remota utilizando los mismos comandos de Linux. Por ejemplo, para eliminar un archivo solo ejecutar:

RM

Para eliminar directorios, agregue el -riñonal bandera como se muestra a continuación.

RM -R

El DF -H El comando se puede usar para mostrar el espacio total del servidor, el espacio usado y disponible.

DF -H

Los usuarios también pueden cambiar los permisos de archivos y directorio con el chmod Comando como se muestra en el ejemplo a continuación.

Chmod +/-

Para salir del modo interactivo ejecutado salida.

Salida

Otra forma de salir del sftp La sesión es la adiós dominio.

Adiós

Usando sftp Con comandos individuales

Además, al modo interactivo, SFTP se puede usar con comandos únicos. Esta sección cubre cómo descargar y cargar archivos sin conexión anterior al modo interactivo.

La sintaxis para descargar archivos es lo siguiente:

sftp @:

En el siguiente ejemplo, el usuario inicia sesión como el Linuxhint5 usuario y descarga el objetivos.TXT Archivo remoto al directorio local representado por un período.

sftp [email protected]: Objetivos.TXT .

En el ejemplo práctico a continuación, el usuario descarga el archivo llamado algo2.TXT ubicado en el control remoto testdir/ subdirectorio al local Escritorio/ subdirectorio.

sftp [email protected]: testdir/something2.txt ~/escritorio

Como se muestra en el siguiente ejemplo, agregando el -riñonal bandera, el usuario puede descargar directorios recursivamente. En el siguiente ejemplo, el usuario descarga el testdir/ Directorio al local Escritorio/ Directorio.

sftp -r [email protected]: TestDir/ ~/ Desktop

Para cargar archivos ejecutando un solo comando con SFTP, aplique la sintaxis a continuación.

sftp @: <<< $'put '

En el ejemplo a continuación, el local Archivo2 se sube al testdir/ directorio.

sftp [email protected]: testdir/ <<< $'put file2'

Para cargar un directorio, agregue el -riñonal Opción usando la siguiente sintaxis

sftp -r @: <<< $'put '

En el ejemplo a continuación, el Escritorio/ El directorio local se carga en el control remoto Perl5/ directorio.

sftp -r [email protected]: Perl5/ <<< $'put Desktop'

Aumento de la seguridad SFTP con autenticación clave

Por defecto, las conexiones SFTP están seguras y protegidas por el protocolo SSH.

Pero uno de los riesgos es el método de inicio de sesión de contraseña predeterminado como consecuencia de la debilidad de la contraseña, que incluye intercambio de contraseñas o canales de intercambio de contraseñas, procesos, procesos. En el que, las contraseñas pueden filtrarse, por ejemplo, con un ataque MIM (hombre en el medio) seguido de una descripción exitosa.

Si el servidor no está configurado correctamente, el inicio de sesión de contraseña puede exponer el sistema a ataques de fuerza bruta.

Para evitar esto, una buena práctica para redes pequeñas y medianas es implementar la autenticación de la clave SSH y deshabilitar el inicio de sesión de contraseña.

Implementación de la autenticación de clave SSH y deshabilitar el inicio de sesión de contraseña

El sftp El protocolo SSH otorga la seguridad, cuyo archivo de configuración es /etc/ssh/sshd_config, Los usuarios del archivo deben editar para habilitar la autenticación de la clave y deshabilitar el inicio de sesión de contraseña entre más opciones para reforzar la seguridad.

En el servidor que permite conexiones entrantes, edite la /etc/ssh/sshd_config Archivo con privilegios utilizando un editor de texto sin formato como nano o VI.

sudo nano/etc/ssh/sshd_config

Para habilitar la autenticación clave, en la computadora del servidor, abra el /etc/ssh/sshd_config Archivo con privilegios y busque la línea que contiene PubKeyAuthentication no. Reemplazarlo con PubKeyAuthentication Sí (Reemplace la "No" con "").

También confirmar Permitrootlogin no para deshabilitar el inicio de sesión raíz.

El raíz El usuario está presente en todos los sistemas basados ​​en UNIX, incluido Linux. Es una mala decisión permitir iniciar sesión con un nombre de usuario con privilegios conocidos por todos.

No edite las opciones para deshabilitar el inicio de sesión de contraseña todavía, porque el proceso de intercambio de clave requiere autenticación de contraseña antes de que el sistema pueda autenticarse con las teclas.

Salir de los cambios de ahorro de archivo de configuración y reiniciar el servicio SSH.

Distribuciones de Linux con sede en Debian:

sudo systemctl reiniciar ssh

Distribuciones de Linux basadas en Redhat:

sudo systemctl reiniciar ssh

En el lado del cliente, solicitando conexiones de próxima vez, genere el par de claves ejecutando el ssh-keygen dominio.

El proceso solicitará la confirmación de directorio de teclas, presione INGRESAR Para dejar el directorio local predeterminado (~/.ssh/id_rsa) o el equivalente en su distribución de Linux. El proceso se ofrecerá a incluir una frase de pases que se requerirá al iniciar sesión. Al agregar una frase de pases, la seguridad se puede aumentar. Se recomienda escribir uno y presionar INGRESAR. Si no desea agregar una frase de pases, simplemente presione INGRESAR sin escribirlo.

ssh-keygen

Ahora, el cliente debe compartir la clave con el servidor con el comando SSH-Copy-ID Usando la sintaxis del siguiente ejemplo.

SSH-COPY-ID [email protected]

Después de compartir la clave, pruebe el método de autenticación de la clave conectando al servidor.

Si la autenticación tiene éxito, el usuario iniciará sesión sin contraseña. Si el usuario define una frase de pases, se solicitará en lugar de la contraseña como en el ejemplo a continuación.

sftp @@

Después de verificar la clave de la autenticación, se recomienda deshabilitar el inicio de sesión de contraseña.

En el lado del servidor, editar el archivo /etc/ssh/sshd/config de nuevo con un editor de texto como nano o VI.

sudo nano/etc/ssh/sshd/config

Desplácese hacia abajo y reemplace la línea PAGASSWORDAUTHENTICACIÓN SÍ con Contraseña Autenticación no.

Reiniciar el servicio SSH.

sudo systemctl reiniciar sshd

Distribuciones de Linux basadas en Redhat:

sudo systemctl reiniciar ssh

Ahora, la seguridad de la autenticación aumenta correctamente.

Conclusión

SFTP es una herramienta muy útil para compartir archivos entre dispositivos y ofrece dos modos simples. El protocolo SFTP se puede instalar en cada sistema operativo, ofreciendo seguridad, confiabilidad y velocidad. Alternativamente, el SCP El comando también ofrece confiabilidad, velocidad y seguridad y trabajos a través del protocolo SSH. Este segundo comando también se explicó profundamente en Linux Sugerencia (el enlace se dio en la introducción de este documento).