SCP con dos puertos diferentes

15

¿Cómo puedo usar el comando scp para copiar archivos entre dos servidores remotos desde mi PC local?

servidor remoto 1: IP = 67.12.21.133 y puerto = 6774

servidor remoto 2: IP = 67.129.242.40 y puerto = 6774

scp -rp -P 6774 [email protected]: /home/denny/testapp1.txt [email protected]:

Da un error después de dar una contraseña de 67.12.21.133,

ssh: conectarse al host 67.129.242.40 puerto 22: conexión rechazada

conexión perdida

linuxspider
fuente
También probé eso, pero solo funciona para el primer host. El segundo está bloqueado en el puerto 22.
gajdipajti

Respuestas:

19

Puede usar ~/.ssh/configpara especificar los puertos que se usarán para los hosts (y para configurar muchas otras cosas buenas; consulte la página de manual man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

Al hacer esto, debe usar la opción -3scp, que copia los archivos a través de su máquina local. De lo contrario, scp emite el comando scp a través de ssh en el primer host, por lo que realmente se ejecuta

 ssh -p 6774 [email protected] scp -rp /home/denny/testapp1.txt [email protected]:

y luego se usa ~ / .ssh / config del primer host remoto (67.12.21.133) en lugar del local.

Cuando haya configurado ~/.ssh/configcorrectamente, esto debería funcionar:

scp -rp3 [email protected]:/home/denny/testapp1.txt [email protected]:

Por supuesto, también puede copiar el contenido del archivo ~ / .ssh / config en su primer host remoto, y luego puede usar scp sin la -3opción, lo que probablemente acelerará la transferencia.

O puede usar el truco que usa scp y usar dicha línea de comando:

ssh -p 6774 [email protected] scp -rp -P 6774 /home/denny/testapp1.txt [email protected]:

(Tenga en cuenta el caso diferente del parámetro de puerto para ssh y scp: ssh -p 6774vs. scp -P 6774)

PD: Obtuve esta información del OpenSSH bugzilla donde ingresé esto como un error: https://bugzilla.mindrot.org/show_bug.cgi?id=2020

daniel kullmann
fuente
'-3' no parece ser una opción válida, solo obtengo "scp: opción ilegal - 3".
Rich Sedman
8

No encontré una solución fácil, pero podría intentar usar sshfs de la siguiente manera:

mkdir /tmp/h1
mkdir /tmp/h2

sshfs -p 6774 user1@host1:/public /tmp/h1
sshfs -p 2211 user2@host2:/data/src /tmp/h2

cp /tmp/h1/files.* /tmp/h2

fusermount -u /tmp/h1
fusermount -u /tmp/h2

Otra forma podría ser usar ssh (en realidad no probado con éxito):

ssh user1@host1 "cat /public/file.bin" | ssh user2@host2 "cat >/data/file.bin"

Actualmente no encuentro la forma correcta de ingresar las dos contraseñas. Pide algunas veces las dos contraseñas, pero no acepta a nadie. Quizás si intercambias las claves ssh entre los hosts funciona. Porque usted no necesita las contraseñas.

¿Espero que esto ayude? Thomas

tpf
fuente
6

De acuerdo con esta página en el blog de Linux Academy, simplemente necesita usar la -P 6774opción justo antes de la segunda ruta remota también:

scp -rp -P 6774 [email protected]:/home/denny/testapp1.txt -P 6774 [email protected]:

Cada uso de la -Pbandera se aplica solo a la siguiente ubicación en la línea de comando, no al comando completo. Cualquier ubicación que no tenga una -Pdistancia entre ella y la ruta anterior (o el nombre del comando [ scp]) se establece de manera predeterminada en el puerto estándar (22).

Dan Hunsaker
fuente
A mi no me funciona. Es una pena, porque esta parece la mejor solución. El enlace está roto.
david.perez
1
Acabo de actualizar el enlace (aunque olvidé iniciar sesión primero ...). Linux Academy decidió reestructurar su sitio. Espero que ayude, algunos!
Dan Hunsaker
Si tan solo esto funcionara. Pero lo entiendo -P: No such file or directory.
Tom
@Tom - ¿En qué sistema estás ejecutando esto? Es posible que tenga una implementación diferente de la scpque se menciona aquí.
Dan Hunsaker
Este es Ubuntu 17.04.
Tom
-2

Si necesita transferir datos de un servidor a otro, use el comando SCP. Para hacerlo

Simplemente presione Ctrl+ Alt+ Ten su teclado para abrir Terminal. Cuando se abra, ejecute el siguiente comando.

scp -pr [email protected]:/path/to/files /destination/path

Nota: El parámetro -P se puede usar si desea mencionar el número de puerto.

Mitch
fuente
2
No has leído la pregunta. Tiene un problema con los puertos. puede configurar el primer puerto, pero tuerca el segundo con el parámetro -P
gajdipajti
@gajdipajti No especifiqué un puerto en mi respuesta, y lo agregué como una nota. El usuario también declaró que está usando el mismo puerto. Mire las líneas Q. 2nd y 3rd :)
Mitch
2
Pero no funciona de esa manera, configurará el primero con -P pero el segundo seguirá siendo 22. Solo inténtelo. Estoy haciendo las pruebas en este momento, pero todavía no tengo soluciones de trabajo.
gajdipajti
Solo usaría la opción -P si está usando un puerto no estándar.
Mitch