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 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:

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


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 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

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 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

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 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(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


'-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


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 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

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).


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 root@192.168.1.2:/path/to/files /destination/path

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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.