GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo copiar archivos de forma segura entre hosts Linux utilizando SCP y SFTP

Recientemente, analizamos el rsync comando para sincronizar archivos entre ubicaciones, y discutimos la similitud de uso y sintaxis al duplicar archivos y directorios con el cp dominio. En ese artículo, analizamos cómo mover los bits hacia adelante y hacia atrás en la misma caja, entre sistemas de archivos o entre dispositivos. En un próximo artículo, veremos más en rsync como una herramienta para mantener los sistemas de archivos remotos sincronizados con una versión local o de respaldo. En este artículo, quiero echar un vistazo a una de las herramientas más útiles y utilizadas en la caja de herramientas del administrador de sistemas de Linux:el scp comando.

¿Qué es SCP?

Copia segura, o scp , es una versión segura del antiguo rcp (que todavía se usa, pero es menos común) incluida en el conjunto de herramientas de OpenSSH.

OpenSSH comenzó como una bifurcación BSD del protocolo de comunicaciones seguras SSH original, que desde entonces se volvió a licenciar como "no libre" y, por lo tanto, generalmente no está disponible para Linux. OpenSSH todavía se mantiene bajo la licencia BSD y está disponible para una amplia gama de plataformas. Incluye varias herramientas comunes para el acceso remoto seguro, incluida la generación de claves, scp y sftp (una versión segura de FTP, a la que llegaremos en un momento).

Recientemente, los desarrolladores de OpenSSH han indicado que consideran scp estar en desuso (creen que es "Obsoleto, inflexible y difícil de arreglar"). No está claro cuándo dejará de estar disponible en versiones futuras de OpenSSH, aunque es difícil imaginar que dejará de estar disponible pronto.

Usar SCP

La utilidad de scp reside en su sencillez. Lo uso para mover rápidamente archivos a un sistema de archivos remoto desde el shell:

skipworthy ~ scp ./enable/foo/testfoo showme:/home/skipworthy/enable

skipworthy@showme's password:

testfoo 100% 25 8.0KB/s 00:00

Muy fácil. También puedo obtener un archivo desde una ubicación remota:

skipworthy ~ scp showme:/home/skipworthy/enable/demofoo ~/enable/

skipworthy@showme's password:

demofoo 100% 0 0.0KB/s 00:00

 skipworthy ~ ls ./enable

bar demofoo foo

Las opciones de conexión disponibles son las mismas que con ssh . Por ejemplo:

skipworthy ~ scp -P 2020 -i ~/.ssh/id_rsa ./test.txt showme:/home/skipworthy/enable/

test.txt 100% 0 0.0KB/s 00:00    

-P especifica el puerto para el ssh conexión, -i especifica un ssh clave de identificación para usar para la autenticación:ambas opciones son útiles para los scripts. Tenga en cuenta que scp -P difiere del ssh -p para especificar el puerto. En el ejemplo anterior, establecí la ubicación de un ssh clave (~/.ssh/id_rsa ), que también generé con el kit de herramientas de OpenSSH, para autenticar el acceso al dispositivo remoto. Obtén más información sobre las copias de archivos SSH aquí.

Para que puedas ver scp es una herramienta realmente útil para tener a tu alcance. Existe cierta discusión sobre la conveniencia de usar esta herramienta en un entorno seguro, por lo que YMMV. Te sugiero que leas un poco y decidas por ti mismo.

[ También te puede interesar: herramientas de administrador de sistemas:uso de rsync para administrar copias de seguridad, restauración y sincronización de archivos]

Alternativas

¿Qué pasa si, por alguna razón, no podemos usar scp? ? Recomiendo otras dos opciones que son bastante fáciles de usar:rsync , del que hemos hablado aquí y del que hablaremos más en profundidad en otro artículo, y sftp . Si bien ninguna de estas opciones es tan conveniente como scp , ambos tienen algunas características útiles.

sftp es más o menos lo que parece:FTP seguro. Actúa como FTP sobre una conexión administrada por SSH. Si bien no es tan simple de usar como el "uno y listo" scp comando, ofrece una gama de opciones de sistema de archivos más sofisticadas y la capacidad de conectarse a un sistema de archivos remoto de forma interactiva. Requiere que el sistema de archivos de destino esté configurado para sftp acceso.

Conectémonos a un sftp servidor de forma interactiva:

skipworthy ~ sftp enable@ganymede

enable@ganymede's password:

Connected to ganymede.

sftp> pwd

Remote working directory: /upload

sftp> mkdir test

sftp> ls -al

drwxr-xr-x 3 1002 1002 18 Nov 24 21:53 .

drwxr-xr-x 3 0 1002 20 Nov 24 21:33 ..

drwxr-xr-x 2 1002 1002 6 Nov 24 21:53 test

Si pulsamos Tab dos veces, podemos ver una lista de comandos disponibles en el shell:

sftp>

bye cd chdir chgrp chmod chown df dir       

exit get help lcd lchdir lls lmkdir ln        

lpwd ls lumask mkdir mget mput progress put       

pwd quit reget rename reput rm rmdir symlink   

version ! ?         

Entonces puede ver que es posible interactuar con el sistema de archivos remoto. Una vez más, las principales desventajas son que el objetivo debe configurarse para sftp el administrador de ese sistema debe configurar y limitar el acceso y el acceso a un directorio específico. Esto lo convierte en una opción más segura, aunque menos conveniente, que scp . Además, tenga en cuenta que si bien no es realmente posible realizar transferencias de archivos improvisadas como scp , es posible escribir secuencias de comandos e insertar alias de shell para que esto funcione sin problemas si ese es su problema.

[ ¿Está pensando en la seguridad? Consulte esta guía gratuita para impulsar la seguridad de la nube híbrida y proteger su empresa. ] 

Resumir

Nota final:ambas herramientas se basan en la caja de herramientas SSH, que es una parte muy importante de la administración de sistemas Linux, por lo que recomiendo familiarizarse con ella. Considere estos excelentes artículos de los escritores de Enable Sysadmin:

  • Cómo SSH establece una comunicación segura
  • Ocho formas de proteger el acceso SSH en su sistema
  • SSH sin contraseña mediante pares de claves públicas y privadas

Linux
  1. Cómo transferir archivos entre dos computadoras usando los comandos nc y pv

  2. Cómo cargar o descargar archivos/directorios usando sFTP en Linux

  3. Transfiera archivos y carpetas de forma segura entre computadoras usando Croc

  4. Cómo transferir archivos de forma segura usando el comando SCP en Linux

  5. Cómo copiar varios archivos simultáneamente usando scp

Cómo hacer una copia de seguridad y restaurar archivos usando BorgBackup en Linux

Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux

Cómo compartir archivos de juegos de Steam entre Linux y Windows

Cómo copiar archivos en Linux usando el comando CP

Cómo copiar archivos y directorios en la terminal de Linux

Cómo eliminar archivos y directorios usando la línea de comandos de Linux