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:
Ejemplo 1: Copiar un archivo del equipo local al servidor remoto
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
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):
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:
Ejemplo 1: Copiar un archivo del equipo local al servidor remoto
Ejemplo 2: Copiar un directorio con rsync
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
Ejemplo 2: Copiar archivos entre dos servidores remotos con rsync
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:
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:
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:
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.