Copiar archivos a través de SSH ⋆ ALexHost SRL

Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills
18.12.2024

Copiar archivos a través de SSH

SSH (Secure Shell) es un protocolo ampliamente utilizado para acceder y gestionar de forma segura servidores remotos a través de una conexión cifrada. Una de las tareas más habituales cuando se trabaja con SSH es copiar archivos entre la máquina local y un servidor remoto o entre dos servidores remotos.

En este artículo, exploraremos diferentes formas de copiar archivos a través de SSH, incluyendo el uso de SCP (Secure Copy Protocol), rsync, y otros métodos.


Por qué usar SSH para transferir archivos?

Utilizar SSH para transferir archivos ofrece varias ventajas:

  • Seguridad: SSH encripta tanto el comando como los datos durante la transmisión, garantizando la protección de la información sensible.
  • Eficacia: SSH es rápido y fiable, lo que permite transferir archivos directamente entre sistemas sin necesidad de iniciar sesión por separado.
  • Automatización: SSH puede integrarse en scripts, lo que permite automatizar las transferencias de archivos entre servidores o máquinas locales.

1. Copia de archivos con SCP (Secure Copy Protocol)

SCP es una de las herramientas más populares para copiar archivos de forma segura a través de SSH. Te permite transferir archivos de una máquina local a un servidor remoto, de un servidor remoto a tu máquina local, o entre dos servidores remotos.

Sintaxis básica de SCP:

scp [opciones] [fuente] [destino]

Ejemplo 1: Copiar un archivo del equipo local al servidor remoto

scp /ruta/a/local/fichero nombre_usuario@host_remote:/ruta/a/remote/destino

En este ejemplo

  • /ruta/al/archivo/local es la ruta al archivo en su máquina local.
  • username@remote_host es el usuario SSH y el nombre de host o dirección IP del servidor remoto.
  • /ruta/a/remota/destino es la ruta donde se almacenará el archivo en el servidor remoto.

Ejemplo 2: Copiar un archivo del servidor remoto a la máquina local

scp nombre_usuario@host_remoto:/ruta/a/remoto/archivo /ruta/a/local/destino

En este caso, el archivo se transfiere desde el servidor remoto a la máquina local.

Ejemplo 3: Copiar un directorio de forma recursiva

Para copiar un directorio completo, utilice la opción -r (recursivo):

scp -r /ruta/a/local/directorio nombre_usuario@host_remote:/ruta/a/remote/destino

Esto transferirá el directorio y todo su contenido al servidor remoto.

Opciones SCP útiles:

  • -P [puerto]: Especifique el puerto SSH si es diferente del predeterminado (22).
  • -C: Habilite la compresión durante la transferencia para una copia de archivos más rápida.
  • -i [archivo_identidad]: Utilice una clave privada SSH específica para la autenticación.

2. Copiar archivos con rsync

rsync es otra potente herramienta para la transferencia de archivos a través de SSH. A menudo se prefiere para transferencias de archivos grandes o repetitivas porque sólo copia los cambios entre el origen y el destino, ahorrando tiempo y ancho de banda.

Sintaxis básica de rsync:

rsync [opciones] [fuente] [destino]

Ejemplo 1: Copiar un archivo del equipo local al servidor remoto

rsync -avz /ruta/a/local/fichero nombre_usuario@host_remoto:/ruta/a/remota/destino

Ejemplo 2: Copiar un directorio con rsync

rsync -avz /ruta/a/local/directorio/ nombre_usuario@remote_host:/ruta/a/remote/destino/

Opciones útiles de rsync:

  • -a: Modo de archivo, que conserva los enlaces simbólicos, los permisos, las marcas de tiempo y la propiedad de los archivos.
  • -v: Modo detallado para mostrar el progreso durante la transferencia.
  • -z: Activa la compresión para acelerar la transferencia.
  • –eliminar: Elimina archivos en el destino que ya no existen en el origen.
  • -e “ssh -p [puerto]”: Especifica un puerto SSH personalizado.

3. Copia de archivos entre dos servidores remotos

Usando SSH, también puedes copiar archivos directamente entre dos servidores remotos. Tanto SCP como rsync lo permiten.

Ejemplo 1: Copiar archivos entre dos servidores remotos con SCP

scp nombre_usuario1@host_remote1:/ruta/a/archivo nombre_usuario2@host_remote2:/ruta/a/destino

Ejemplo 2: Copiar archivos entre dos servidores remotos con rsync

rsync -avz nombre_usuario1@host_remoto1:/ruta/a/archivo nombre_usuario2@host_remoto2:/ruta/a/destino

Esto es particularmente útil para transferir archivos entre servidores sin tener que descargarlos primero a su máquina local.


4. Copiar archivos con SFTP (Protocolo de transferencia de archivos SSH)

SFTP es otro método para transferir archivos de forma segura a través de SSH. Es similar al FTP pero utiliza SSH para proporcionar encriptación. SFTP se utiliza normalmente en sesiones interactivas, pero también se puede automatizar.

Uso de SFTP:

Para iniciar una sesión SFTP, ejecute el siguiente comando:

sftp nombre_usuario@host_remoto

Una vez dentro del prompt SFTP, puedes utilizar comandos como:

  • put /ruta/al/local/archivo /ruta/al/remote/destino: Sube un archivo desde tu máquina local al servidor remoto.
  • get /ruta/a/remota/archivo /ruta/a/local/destino: Descarga un archivo del servidor remoto a tu máquina local.
  • mput y mget: Para cargar o descargar varios archivos a la vez.

Para salir de la sesión SFTP, escriba exit o quit.


5. Automatización de transferencias de archivos con claves SSH

Para transferencias de archivos repetidas, es una buena idea configurar la autenticación basada en claves SSH para no tener que introducir la contraseña cada vez.

Paso 1: Genere un par de claves SSH (si no tiene una)

En su máquina local, ejecute:

ssh-keygen -t rsa

Esto generará un par de claves pública y privada.

Paso 2: Copiar la clave pública al servidor remoto

Utilice el siguiente comando para copiar su clave pública en el servidor remoto:

ssh-copy-id nombre_usuario@host_remoto

Ahora, puedes iniciar sesión y transferir archivos sin necesidad de introducir una contraseña, lo que facilita la automatización.


Conclusión

Copiar archivos a través de SSH es una forma segura y eficiente de transferir datos entre tu máquina local y un servidor remoto o entre dos servidores remotos. Tanto si usas SCP, rsync o SFTP, SSH ofrece transferencias de archivos encriptadas que protegen tus datos de ser interceptados. Herramientas como SCP son sencillas para transferencias puntuales, mientras que rsync es ideal para tareas de sincronización continuas, especialmente para archivos o directorios de gran tamaño. Conocer estas herramientas te ayudará a gestionar las transferencias de archivos con mayor eficacia, especialmente en un entorno de servidor remoto.

Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills