Uso de SCP para copiar y transferir archivos y carpetas de forma segura

    Introducci贸n

    SCP significa Protocolo de copia segura. Es una herramienta que se puede utilizar para transferir archivos de un host local a un host remoto, de un host remoto a un host local o entre dos hosts remotos. En este art铆culo, examinaremos c贸mo usar SCP para copiar entre hosts locales y remotos.

    SCP se ejecuta casi exclusivamente desde la l铆nea de comandos utilizando el scp mando. Utiliza el ssh (Secure Shell) para transferir datos hacia y desde hosts remotos. Como tal, tiene un conjunto de opciones que especifican los par谩metros de autenticaci贸n, hosts y puertos como SSH.

    Por defecto, el protocolo SCP opera en el puerto 22 a menos que sea reemplazado por una opci贸n de l铆nea de comandos. Todas scp Los comandos siguen la forma:

    $ scp [OPTIONS] [SOURCE] [DESTINATION]
    

    Veamos c贸mo SCP nos permite transferir un archivo de nuestra computadora local a una remota.

    Transferencia de un archivo local a un destino remoto

    Cargar un archivo desde nuestra computadora local a una ubicaci贸n remota es un escenario com煤n para los profesionales de TI. Con scp, podemos lograr esto con un comando como:

    $ scp path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    

    Este comando copiar谩 el archivo local file.ext a la ruta especificada (despu茅s de los dos puntos) en el remote-host.

    • los user suministrado en el comando es el nombre de usuario. El nombre de usuario debe pertenecer a un usuario de la m谩quina remota.
    • los remote-host suministrado es el nombre de dominio o la direcci贸n IP de la m谩quina remota a la que estamos intentando conectarnos.
    • Luego especificamos d贸nde queremos copiar el archivo en la m谩quina remota despu茅s de los dos puntos (:).

    Despu茅s de ejecutar este comando, aparecer谩 un mensaje para la contrase帽a correspondiente a la cuenta de usuario del host remoto:

    $ [email聽protected]'s password:
    

    Una vez ingresada la contrase帽a, se copiar谩 el archivo.

    Esta cuenta de usuario debe tener acceso a la ruta remota especificada en el comando. Si no puede utilizar sus credenciales para iniciar sesi贸n de forma remota con ssh, esas credenciales no funcionar谩n al usar scp.

    Ahora que sabemos c贸mo transferir un archivo remoto a nuestra m谩quina local, analicemos el escenario inverso: transferir un archivo desde un host remoto al host local.

    Transferencia de un archivo remoto a un destino local

    De manera muy similar, podemos copiar un archivo desde una computadora remota a nuestra m谩quina local:

    $ scp [email聽protected]:path/to/remote/file.ext path/to/local/file.ext
    

    Esto funciona esencialmente de la misma manera, excepto que el usuario remoto, el host y la ruta ahora se especifican antes que la ruta local.

    Todav铆a se mostrar谩 un mensaje para la contrase帽a que pertenece a la cuenta de usuario del host remoto. Pero, cuando est茅 completo, deber铆a tener un nuevo archivo en la carpeta que especific贸.

    Echemos un vistazo a la transferencia de un archivo entre dos hosts remotos.

    Transferencia de un archivo remoto a un destino remoto

    Finalmente, el siguiente formato de comando se usa para transferir un archivo entre dos hosts remotos:

    $ scp [email聽protected]:path/to/remote/file.ext [email聽protected]:path/to/remote/file.ext
    

    Tenga en cuenta que en este caso, se deben especificar dos usuarios remotos. Cada uno debe tener acceso a su respectivo servidor remoto. Aparecer谩 una solicitud de contrase帽a para aceptar las credenciales de inicio de sesi贸n de cada usuario.

    De todas estas variaciones de la copia de archivos, vemos que el scp El comando es flexible en lo que puede ser la ruta de origen o destino. Esta versatilidad lo hace muy 煤til para scripts.

    Podemos transferir archivos entre nuestras m谩quinas locales y remotas para probar y actualizar las configuraciones del servidor o de la aplicaci贸n. Podemos transferir archivos entre nuestro host remoto principal y un servidor de respaldo con scp. La simplicidad y flexibilidad de SCP lo ha hecho popular entre los administradores de sistemas.

    El comando SCP tambi茅n tiene configuraciones para una mayor flexibilidad en qu茅 y c贸mo copiamos. Veamos c贸mo podemos usar las opciones de la l铆nea de comandos para modificar su comportamiento.

    Opciones comunes de la l铆nea de comandos de SCP

    los scp El comando tiene algunas opciones 煤tiles (tambi茅n conocidas como banderas) que pueden alterar aspectos de c贸mo se conecta a un host remoto.

    Cambio de puerto

    Como se mencion贸 anteriormente, SCP opera en el puerto 22 por defecto. Sin embargo, esto se puede anular proporcionando el -P bandera, seguida del n煤mero de puerto.

    As铆 es como copiamos un archivo a un destino remoto que se conecta al puerto 44 en vez de 22:

    $ scp -P 44 path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    

    Hora de modificaci贸n / acceso

    La diferencia entre -P y -p vale la pena se帽alar la bandera. los -p La bandera conserva los tiempos de modificaci贸n del archivo, los tiempos de acceso y los modos durante la transferencia. Esto puede ser 煤til si se desea mantener las propiedades del archivo sin cambios:

    $ scp -p path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    

    Copiar directorios

    los -r flag se puede usar para copiar de forma recursiva una carpeta y su contenido en lugar de un solo archivo:

    $ scp -r path/to/local/folder [email聽protected]:path/to/remote/folder
    

    Esto es m谩s limpio que copiar archivos de la carpeta con el * o ? comodines.

    Modo suprimido

    los -q flag suprime el medidor de progreso y los mensajes que no son de error para que su terminal se mantenga limpio:

    $ scp path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    file.ext                                100%    0     0.0KB/s   00:00
    
    $ scp -q path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    $
    

    Observe que el segundo comando que ejecutamos en este ejemplo, el porcentaje de transferencia no se muestra debido a la -q bandera.

    Archivo de par de claves de autenticaci贸n

    los -i La bandera se puede utilizar para autenticar la conexi贸n utilizando un par de claves criptogr谩ficas almacenado en un archivo en lugar de un nombre de usuario y contrase帽a. Esta es una pr谩ctica com煤n para la autenticaci贸n en servidores de nube remotos, como los de AWS o Digital Ocean.

    Puede especificar un archivo de par de claves como este:

    $ scp -i path/to/local/keypair.pem path/to/local/file.ext [email聽protected]:path/to/remote/file.ext
    

    Uso de m煤ltiples opciones de SCP

    Las banderas tambi茅n se pueden usar entre s铆. Aqu铆 hay un ejemplo que implementa m煤ltiples banderas para copiar una carpeta desde un host remoto a nuestra m谩quina local usando un archivo de par de claves para la autenticaci贸n en el puerto 44, conservando las propiedades del archivo y suprimiendo la salida:

    $ scp -p -q -P 44 -i path/to/local/keypair.pem -r path/to/local/folder [email聽protected]:path/to/remote/folder
    

    隆Con esta base, est谩s equipado para usar SCP en una variedad de situaciones!

    Conclusi贸n

    En este art铆culo, discutimos SCP, un protocolo que se puede usar para transferir archivos de manera conveniente entre hosts. Cubrimos la transferencia de archivos desde el host local a un host remoto, desde un host remoto al host local y entre dos hosts remotos.

    Tambi茅n tocamos algunas opciones importantes de la l铆nea de comandos que pueden usarse en escenarios espec铆ficos.

    Sobre el Autor

    Este art铆culo fue escrito por Ramiro de la Vega, un desarrollador de software y consultor apasionado por ayudar a otros a mejorar sus vidas a trav茅s del c贸digo. Jacob es el autor de la Gu铆a b谩sica de codificaci贸n para desarrolladores, un libro introductorio que cubre conceptos y herramientas de codificaci贸n esenciales. Contiene cap铆tulos sobre arquitectura inform谩tica b谩sica, Internet, l铆nea de comandos, HTML, CSS, JavaScript, Python, Java, bases de datos / SQL, Git y m谩s.

    .

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *