Copie archivos de forma segura en Linux con el comando Scp
Hay ocasiones en las que desea transferir archivos entre su sistema local y un servidor remoto. Hay varios protocolos y métodos disponibles que le permiten manejar las transmisiones de archivos de manera segura.
El comando scp en Linux es una de esas herramientas que ayuda al usuario a compartir archivos de forma remota entre hosts locales y remotos. En este artículo, analizaremos el comando scp en detalle, junto con su uso y algunas características adicionales del comando.
¿Qué es el comando Scp?
Scp, un acrónimo de Secure Copy , es una utilidad de línea de comandos en sistemas operativos basados en Linux que permite al usuario copiar archivos entre hosts remotos y locales. Dado que el comando transfiere archivos a través de una red a algún otro host, se requiere acceso SSH. SSH (Secure Shell) es un protocolo que le permite manejar servicios de red de forma segura en cualquier red.
El comando scp también admite algunas características adicionales, como especificar parámetros de autenticación, cambiar el puerto, transferir directorios y más.
Por qué scp es mejor que otros métodos
Generalmente, se prefiere scp a otros métodos de transferencia de archivos porque, durante la transferencia, la conexión entre los dos hosts está encriptada. El protocolo SSH es responsable de cifrar los archivos, las contraseñas y cualquier otro dato sensible.
Otros métodos de transferencia como Telnet o FTP no tienen ningún cifrado. Además, el par de claves de usuario / contraseña también se guarda en texto sin formato, lo que no es una buena práctica en absoluto. Un pirata puede acceder fácilmente a su información olfateando su red.
Cómo transferir archivos de forma segura usando Scp
Con el comando scp, puede transferir archivos entre:
- Un host local y un host remoto
- Un host remoto y un sistema local
- Dos hosts remotos
Sintaxis básica
La sintaxis básica del comando scp es:
scp [options] [source] [destination]
Transferencia de un host local a un sistema remoto
Si es un administrador de servidor, la transferencia de archivos entre un host local y hosts remotos puede resultarle útil. Para cargar un archivo llamado document.txt a un host remoto:
scp /home/document.txt user@remote-host:/home/document.txt
Tenga en cuenta que la fuente es la ruta del archivo en su almacenamiento local. Y el destino es la ruta del archivo en el host remoto. También debe especificar el nombre de usuario y el nombre de dominio del servidor remoto. En el comando anterior, el usuario es el nombre de usuario y el host remoto es el nombre de dominio.
La ruta de destino se separa de los detalles del host remoto mediante el carácter de dos puntos ( . Tenga en cuenta que el usuario debe existir en el servidor remoto si desea transferir los archivos correctamente. Además, el usuario debe tener acceso de escritura al directorio en el que desea guardar el archivo.
Después de emitir el comando mencionado anteriormente, el sistema le pedirá la contraseña del usuario remoto. Escriba la contraseña y presione Entrar .
user@remote-host's password:
Si la contraseña es válida, se inicializará la transferencia de archivos. Si ingresó una contraseña incorrecta, se producirá un error.
Antes de intentar copiar el archivo usando el comando scp, asegúrese de que los detalles del host remoto y la contraseña sean correctos iniciando sesión en el servidor usando SSH.
De un host remoto a un host local
Para copiar archivos desde un host remoto a un host local, simplemente intercambie la ruta de origen y destino en el comando scp.
scp user@remote-host:/home/document.txt /home/document.txt
El sistema le pedirá una vez más la contraseña del usuario remoto. Ingrese la contraseña para confirmar el proceso de transferencia.
Entre dos hosts remotos
Para copiar archivos entre dos servidores remotos, tanto la ruta de origen como la de destino deben ser directorios en los hosts remotos.
scp user1@remote-host1:/home/document.txt user2@remote-host2:/home/folder/document.txt
Nuevamente, aparecerá un mensaje pidiéndole que ingrese la contraseña para cada uno de los dos usuarios.
Opciones de la línea de comandos de Scp
Además de simplemente transferir los archivos desde el origen al destino, scp tiene algunas opciones adicionales que se pueden invocar usando argumentos específicos.
Cambiar el puerto
De forma predeterminada, el comando scp funciona en el puerto 22. Sin embargo, siempre puede sobrescribir la configuración predeterminada y cambiar el puerto. La bandera -P le permite hacer lo mismo.
Para usar algún otro número de puerto al copiar archivos de un host local a un host remoto:
scp -P 35 /home/document.txt user@remote-host:/home/document.txt
El comando antes mencionado asegurará que el comando scp use el puerto 35 para transferir archivos.
Conservar las marcas de tiempo de los archivos
Es posible que sepa que Linux establece marcas de tiempo para cada archivo para almacenar la hora de modificación, la hora de acceso y la hora de cambio asociada con el archivo. Cuando transfieres el archivo a otra ubicación usando scp, las marcas de tiempo del archivo de destino se anulan por la hora actual.
Si por alguna razón desea conservar estas marcas de tiempo, use la marca -p . Observe que los indicadores -P y -p son diferentes entre sí.
scp -p /home/document.txt user@remote-host:/home/remote/document.txt
Copiar directorios
Si desea copiar directorios en lugar de archivos, use la marca -r para transferir directorios de forma recursiva.
scp -r user@remote-host:/home/videos /home/videos
Modo suprimido
Cuando ingresa el comando scp para transferir archivos, el terminal muestra la barra de progreso y otra información relacionada en la pantalla. Sin embargo, puede optar por no ver esta información utilizando el indicador -q .
scp -q user@remote-host:/home/document.txt /home/document.txt
Utilice un archivo de par de claves para la autenticación
Si desea autenticar la conexión de host remoto usando un archivo de par de claves, especifique la ruta del archivo usando la marca -i .
scp -i /home/keypair.pem /home/document.txt user@remote-host:/home/document.txt
Encadenando varias banderas juntas
Al igual que cualquier otro comando de Linux, puede encadenar varios argumentos para que el comando scp sea más efectivo.
Por ejemplo, para cambiar el puerto y transferir archivos en modo suprimido:
scp -P 34 -q user@remote-host:/home/document.txt home/document.txt
Si desea utilizar un archivo de par de claves para la autenticación y necesita copiar directorios en la ruta de destino:
scp -i /home/secret/keypair.pem -r /home/folder user@remote-host:/home/folder
Transferencia de archivos entre sistemas Linux
En el mundo de Internet, la transferencia de archivos entre sistemas se ha convertido en una tarea fundamental. Para aquellos que administran servidores Linux, a veces es importante realizar una copia de seguridad del servidor antes de emitir un comando específico. En situaciones como esta, el comando scp es útil.
De manera similar, el comando cp ayuda a copiar los archivos de una ubicación a otra en un sistema local. Hay muchos comandos básicos que son imprescindibles si recién está comenzando con Linux.