GNU/Linux >> Tutoriales Linux >  >> Linux

Copie datos a través del túnel SSH en múltiples saltos

Solución 1:

Por mucho, la forma más fácil es simplemente copiarlo a través de scp. Además, esta sintaxis en realidad funciona a diferencia de algunas de las otras sugerencias.

No se puede superar esta sintaxis con facilidad. Le permite copiar recursivamente, rsync o lo que quiera sin la molestia de considerar tuberías potencialmente complejas. Esta sintaxis es intuitivamente clara, será más compatible con los administradores del sistema que lo siguen y no hace un uso inútil de cat.

scp -3 devappserver:/path/to/copy/from qaappserver:/path/to/copy/to

Desde la página man de scp:-3 Las copias entre dos hosts remotos se transfieren a través del host local. Sin esta opción, los datos se copian directamente entre los dos hosts remotos. Tenga en cuenta que esta opción desactiva el medidor de progreso.

En el siguiente ejemplo

  • Su estación de trabajo se llama MacBook-Pro.
  • Dev Jump Box se llama devjumpserver
  • El servidor de aplicaciones de desarrollo se llama devapplicationserver
    • Está en la zona LAN DNS llamada .local
  • QA Jump Box se llama qajumpserver
  • El servidor de aplicaciones QA se llama qaapplicationserver
    • Está en la zona LAN DNZ llamada .local
  • Haremos una copia de prueba de un archivo /etc/hosts de 670 GB;-)
  • Se supone que tiene configurada la autenticación de clave pública SSH.



Aquí hay un archivo ~/.ssh/config que configura el acceso directo desde su estación de trabajo a los servidores de aplicaciones a través del salto apropiado (también conocido como servidor bastión).

MacBook-Pro:~ barrychapman$ cat ~/.ssh/config
Host *
  ServerAliveInterval 60
Host devapplicationsever
  HostName devapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman
Host qaapplicationserver
  HostName qaapplicationserver.local
  ProxyCommand ssh -i ~/.ssh/id_rsa [email protected] -W %h:%p
  User barrychapman

MacBook-Pro:~ barrychapman$



Probando la presencia del archivo en el servidor de destino, no estará allí.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
ls: cannot access /tmp/hosts: No such file or directory
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Ahora copiemos un archivo del servidor de aplicaciones de desarrollo a la aplicación de control de calidad a través de su estación de trabajo.

MacBook-Pro:~ barrychapman$ scp -3 devapplicationserver:/etc/hosts qaapplicationserver:/tmp/
Killed by signal 1.
Killed by signal 1.
MacBook-Pro:~ barrychapman$



Ahora, verifiquemos la presencia del archivo copiado en el servidor de aplicaciones de control de calidad. Estará allí esta vez.

MacBook-Pro:~ barrychapman$ ssh qaapplicationserver ls /tmp/hosts
/tmp/hosts
Killed by signal 1.
MacBook-Pro:~ barrychapman$ 

Nota

Al cerrar una conexión ProxyCommand, verá el mensaje de advertencia "Eliminado por la señal 1". Esto es SSH rompiendo la conexión ProxyCommand y no hay nada de qué alarmarse. Puedes deshacerte de él agregando LogLevel Quiet a la estrofa de configuración del host bastión.

Solución 2:

¡TUBERÍAS!

Si Internet es una serie de tubos, Unix es una serie de conductos, algo así como:

cat ginormous-file | ssh [email protected] "cat | ssh [email protected] \"cat >out\" "

debería funcionar.

Si necesita atravesar más hosts, agregue más tuberías (y más capas anidadas de \ -cita escapada) según sea necesario. (Sin embargo, tenga en cuenta que si la canalización/escape se vuelve tan compleja que tiene que dibujar un diagrama o recurrir a contar con los dedos para determinar cuántas veces tiene que duplicar los escapes, probablemente sea el momento de admitir la derrota y configurar una VPN adecuada !)


Linux
  1. Ssh:¿tráfico de túnel a través de otra máquina a través de Ssh?

  2. ¿Cómo puedo canalizar todo el tráfico de mi red a través de SSH?

  3. Archivo de registro de cola en varias máquinas a través de ssh

  4. ¿Cómo hacer un túnel de Windows Remote Desktop a través de ssh usando una caja de Linux?

  5. Reenviar SSH a través del túnel SSH

Reanudar archivos parcialmente transferidos a través de SSH usando Rsync

Cómo usar el comando rsync para copiar datos localmente y a través de SSH

Cómo copiar archivos de forma remota a través de SSH sin ingresar una contraseña

Copie archivos grandes a varias máquinas en una LAN

Túnel HTTPS SSH

Restrinja rsync sobre ssh solo lectura/solo copia desde host remoto