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.