Introducción
Contenido
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.
Te puede interesar:AWS S3 con Java: carga de archivos, creación y eliminación de buckets de S3Transferencia 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:
Te puede interesar:Clasificación de listas de Python con sorted () y sort ()$ 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.
.