Suponga que desea transferir algunos archivos entre servidores en un sistema Linux. Hay muchas maneras de realizar la tarea, pero si su prioridad es transferir archivos de forma segura, le quedan algunas opciones. La solución más sencilla es usar el comando scp o copia segura para transferir sus archivos sin preocuparse por la seguridad. En este artículo, explicaremos cómo usar la transferencia de archivos de forma segura usando el comando scp en su sistema Linux.
Transferir archivos con el comando scp en Linux (2023)
¿Qué es el comando scp en Linux?
Cuando se trata de transferir archivos a través de una red segura, el comando scp puede ser muy útil. Él significa Protocolo de copia segura y transfiere archivos y directorios entre dos sistemas a través de una conexión SSH (Secure Shell). Con ssh, puede estar seguro de la seguridad de sus archivos, ya que están cifrados de forma predeterminada. En términos más simples, el comando scp es una versión más segura del comando cp, sobre el que puede leer todo en nuestro artículo sobre los comandos de la terminal de Linux.
Cómo usar el comando scp: sintaxis y opciones
Antes de que podamos transferir archivos a través de scp, veamos la sintaxis y las opciones del comando aquí:
scp <option> <host_user_name@host_ip_address:path/to/source/file> <target_user_name@target_ip_address:target/path>
Comprender la sintaxis:
- Primero,
<host_user_name@host_ip_address:path/to/source/file>
especifica el sistema ‘fuente’ desde donde necesita transferir sus archivos/directorios. - Segundo,
<target_user_name@target_ip_address:target/path>
especifica el sistema ‘objetivo’ al que desea transferir sus archivos/directorios.
Si deja cualquiera de los parámetros anteriores, el comando scp en Linux primero buscará el archivo y luego lo copiará localmente. Algunas de las opciones para emparejar con el mando son:
Opciones | Destino |
---|---|
-P |
Especifica qué puerto conectar con el sistema host. Si se omite, utilizará el puerto 22 de forma predeterminada. |
-p |
Conserva las horas de modificación, las horas de acceso y los modos del archivo original cuando se copia al sistema de destino. |
-r |
Copia todo el directorio en el sistema de destino de forma recursiva. |
-J |
Se utiliza para conectar el sistema de origen y el sistema de destino a través de un sistema proxy (host de salto). |
-3 |
cuando se usa este indicador, copia los archivos tanto en el sistema de destino como en el sistema local |
-4 |
fuerza al comando scp a usar solo direcciones IPv4. |
-6 |
fuerza al comando scp a usar solo direcciones IPv6. |
Cómo copiar archivos usando el comando scp
Antes de usar el comando scp en Linux, hay algunos requisitos previos que debe cumplir tanto en el sistema host como en el de destino:
- ssh debe estar instalado
- acceso root o cualquier usuario con privilegios sudo
Copie archivos del host local al destino remoto
Si tiene un archivo que necesita transferir desde su sistema local a un destino remoto, debe usar la siguiente sintaxis:
scp
<options>
<path_to_local_file> <remote_user>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
Si la sintaxis anterior puede parecer complicada, un ejemplo lo aclarará:
scp test.txt remote2@139.144.11.105:/home/remote2/Documents/
En el ejemplo anterior:
test.txt
es el nombre del archivo a transferir y está ubicado en el directorio actual del sistema local.
es el nombre de usuario en el sistema de destino.test
139.144.11.105
es la dirección IP del sistema de destino./home/remote2/Documents/
es la ubicación en el sistema de destino donde se guardará el archivo transferido.
Copie archivos del host remoto al destino local
Si necesita transferir un archivo desde un host remoto a su máquina local, use la siguiente sintaxis del comando scp en su sistema Linux:
scp
<options>
<remote_user>@<remote_host_ip_address>:<path_of_file_to_transfer> <path_to_store_file>
Por ejemplo, digamos que necesita transferir un archivo llamado test.py desde el servidor remoto en el que está trabajando, use este comando:
scp test@10.10.11.113:/home/test/test1.py ~/test1.py
En este ejemplo:
es el nombre de usuario del host remoto.test
10.10.11.113
es la dirección IP del host remoto.
es la ruta del archivo que se transferirá desde el host remoto./home/test/test1.py
~/test1.py
es el nombre del archivo después de que se transfiera a la máquina local y se almacene en el directorio de inicio.
Transferir archivos de un host remoto a otro destino remoto
Con el comando scp, no solo puede transferir archivos entre su sistema local y una máquina remota, sino también transferir archivos entre dos sistemas remotos. Pero, antes de poder transferir archivos de un sistema remoto a otro sistema remoto, se recomienda generar una clave ssh privada y una clave ssh pública en el sistema de origen y almacenar una copia de la clave pública en el sistema de destino.
En general, los usuarios se quejan del error “Error en la verificación de la clave del host” al transferir archivos entre dos sistemas remotos. Para evitar el error, use una tecla ssh como medida adicional. Hemos explicado cómo puede hacerlo aquí mismo:
1. Genere un par de claves pública/privada en el servidor de origen con este comando:
ssh-keygen -t <encryption_algorithm>
2. Para algoritmos de encriptación, puede usar “rsa
”, que es el algoritmo más utilizado o cualquier otro algoritmo de su elección.
3. Luego, se le pedirá que elija la ubicación para almacenar la clave ssh. Puede almacenarlo en cualquier ubicación de su elección o en la ubicación predeterminada.
4. Para la frase de contraseña, puede ingresar lo que desee o dejarlo en blanco presionando Intro.
5. Luego, copie la clave pública en el servidor de destino usando el siguiente comando. Con esto, incluso puede iniciar sesión en el sistema de destino sin una contraseña usando ssh.
ssh-copy-id <destination_username>@<destination_ip_address>
Nota: el método de inicio de sesión sin contraseña solo funcionará para el usuario para el que ha generado la clave ssh.
6. Una vez que haya creado y almacenado la clave ssh en el servidor remoto, use esta sintaxis de comando scp para intercambiar archivos entre dos sistemas remotos que ejecutan Linux:
scp <options> <remote_user_1>@<remote_host_ip_address>:<path_of_file_to_transfer> <remote_user_2>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
Digamos que necesita transferir un archivo llamado test.txt de un host remoto a otro receptor remoto, use el comando:
scp remote1@10.10.11.113:/home/test1/test.txt remote2@10.11.27.111:/home/remote2/Documents/test1.txt
En este ejemplo:
remote1
es el nombre del usuario en el host del remitente remoto10.10.11.113
es la dirección IP del host del remitente remoto/home/test1/test.txt
es la ruta al archivo a enviarremote2
es el nombre del usuario en el destino del receptor remoto10.11.27.111
es la dirección IP del destino del receptor remoto/home/remote2/Documents/test1.txt
es el nombre y la ruta que se guardará para recibir el archivo.
Transferir varios archivos con el comando scp
Transferir varios archivos uno por uno puede ser una tarea tediosa para cualquiera. En su lugar, puede usar la siguiente sintaxis para intercambiar archivos usando el comando scp en Linux:
scp <path_to_file_1> <path_to_file_2> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
Por ejemplo, suponga que necesita enviar cuatro archivos, incluidos test1.txt, test2.py, test3.sh y test4.c, a un receptor remoto, puede usar el siguiente comando:
scp -P 22 test1.txt test2.py test3.sh test4.c remote1@10.10.11.113:/home/remote_1/Documents
Entendamos cómo funciona el comando en el ejemplo y qué hace:
-p 2222
se utiliza para especificar la conexión a través del puerto 22test1.txt test2.py test3.sh test4.c
son el nombre de los archivos a transferirremote_1
es el nombre de usuario del sistema receptor10.10.11.113
es la dirección IP del receptor/home/remote_1/Documents
se refiere a la ruta para almacenar el archivo recibido.
Incluso puede usar comodines para enviar varios archivos con la misma extensión, como se muestra a continuación:
scp <wildcard>.<extension> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
Por ejemplo, si necesita enviar todos los archivos .py a un servidor remotouse el siguiente comando scp en la terminal de Linux:
scp *.py remote1@10.10.11.113:/home/remote_1/
Aquí,
*.py
significa todos los archivos de pythonremote1
es el nombre de usuario del receptor-
10.10.11.113
es la dirección IP del receptor /home/remote_1/
es la ubicación para almacenar el archivo recibido
Preguntas frecuentes
El Protocolo de copia segura o scp es un protocolo que se basa en la tecnología SSH y utiliza el cifrado y la autenticación para el intercambio de archivos entre dos hosts. Esto garantiza la completa seguridad e integridad de los datos entre los dos hosts.
Tanto los protocolos SCP como SFTP están a la par en términos de seguridad. La principal ventaja de usar scp sobre SFTP son las rápidas velocidades de transferencia que son especialmente útiles en redes de alta latencia.
Transferir archivos de forma segura usando el comando scp en Linux
En algún momento, cada usuario necesita intercambiar algunos archivos a través de la red. El comando scp facilita la transferencia de archivos de manera segura y eficiente incluso en una red de alta latencia. Seguramente, conocer las diversas opciones y sintaxis de scp también puede ser útil. También puede consultar nuestras guías sobre cómo cambiar el nombre de un archivo en Linux y cómo eliminar un archivo en Linux para mejorar aún más sus habilidades de administración de archivos en el sistema operativo. Esperamos que este artículo le haya ayudado a aprender a usar el comando scp para transferir archivos en computadoras con Linux. Si tiene algún problema al usar el comando, háganoslo saber en la sección de comentarios.