diciembre 13, 2020

Como copiar archivos entre dispositivos linux utilizando scp

Como copiar archivos entre computadores de una red utilizando SCP de manera segura

Como copiar archivos entre dispositivos linux utilizando scp

Utilizando linux/Unix/Mac podemos utilizar el comando scp desde la terminal para transferir archivos de manera segura desde una terminal a otra, si eres un amante de la linea de comandos o eres avesado en el uso de comandos unix esta seria una opcion para ti, aunque para quien desee una forma sencilla de copiar archivos tambien puede utilizar Filezilla, un programa libre que tiene muchos usos.

El comando scp, Secure Copy Protocol o Simple Communication Protocol es un medio de transferencia segura de archivos informáticos entre un host local y otro remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH). Desde la terminal de Unix, Linux o Mac.

La sintaxis de este comando es como sigue a continuación:

scp [other options] [source [email protected]]:/[directory and file name] [destination [email protected]]:/[destination directory]

Aspectos a tener en cuenta

Como SCP utiliza el cifrado SSH, necesitarás la contraseña ssh para que se realice la transferencia de archivos. Además, es necesario tener permiso de lectura en la máquina de la que estás a punto de copiar y privilegios de escritura en la(s) máquina(s) a la que copiarás.

Para la autenticación y la configuración de la conexión, deberás generar un par de llaves ssh en el terminal mediante el siguiente comando:

ssh-keygen -t rsa

Copia esta llave del sistema remoto usando:

ssh-copy-id [email protected]_machine

Una vez que te hayas autenticado en la(s) máquina(s) remota(s), la llave pública se copiará y estarás listo para iniciar las transferencias.

Si no recuerdas la(s) contraseña(s) de root para cada sistema, puedes hacer que el cliente ssh seleccione el archivo desde el cual se lee automáticamente la llave de identidad privada para la confirmación de RSA.

Para la versión 2 del protocolo, la ruta de identidad predeterminada de la llave del host es ~/.ssh/id_dsa, mientras que para la versión 1 del protocolo es ~/.ssh/id_rsa. Luego, debes averiguar dónde está almacenada la copia de seguridad de las llaves privada y pública para poder emplear el comando ssh para usarlas automáticamente.

Para la ruta /back-up/home/ubuntu/.ssh, el comando es el siguiente:

ssh -i /back-up/home/user/.ssh/id_dsa [email protected]

Teniendo esto en cuenta para copiar archivos entre una máquina local y una computadora remota se deberia realizar de la siguiente manera.

$scp -i ~/Desktop/amazon.pem ~/Desktop/prueba1.txt  [email protected]:~/prueba/

En este ejemplo estamos utilizando el archivo de nuestra conexion cifrada con la instancia amazon.pem para entrar en el sistema y copiamos el archivo prueba1.txt que se encuentra en el escritorio de nuestra computadora hacia la instancia de amazon que se esta ejecutando en Amazon aws, dentro de /home/ubuntu/prueba.

Una vez ejecutado ese comando puedes listar los archivos contenidos en la carpeta prueba de que encuentra en tu terminal amazon aws de la manera siguiente:

$ ls ~/prueba/

Obteniendo como salida el archivo prueba1.txt

Si queremos hacer la copia a la inversa, o sea desde nuestra instancia de amazon hacia nuestra computadora local ubicandonos en la carpeta donde tenemos la clave de la misma en el terminal escribimos el siguiente código.

$scp -i ~/Desktop/amazon.pem [email protected]:/prueba/prueba1.txt ~/Descargas/

De esa forma copiamos el archivo prueba1.txt desde nuestra carpeta que se encuentra en nuestra instancia de Amazon hacia la carpeta Descargas en nuestra computadora local.

Como ya les he dicho anteriormente existe tambien la posibilidad de copiar el mismo archivo utilizando Fillezilla pero nuestro ejemplo se basa en utilizar la terminal para realizar las copias entre terminales.

Si estas buscando una opcion sinceramente espero que esto te pueda ayudar.