SCP con due porte diverse


15

Come posso usare il comando scp per copiare file tra due server remoti dal mio PC locale?

server remoto 1: IP = 67.12.21.133 e porta = 6774

server remoto 2: IP = 67.129.242.40 e porta = 6774

scp -rp -P 6774 denny@67.12.21.133: /home/denny/testapp1.txt denny@67.129.242.40:

Fornisce un errore dopo aver fornito la password del 67.12.21.133,

ssh: connettersi all'host 67.129.242.40 porta 22: connessione rifiutata

Connessione persa


Ho appena provato anche quello, ma funziona solo per il primo host. Il secondo è bloccato sulla porta 22.
gajdipajti,

Risposte:


19

Puoi usare ~/.ssh/configper specificare le porte da usare per gli host (e per impostare molte altre cose carine; controlla la pagina man man ssh_config):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

Quando lo fai, devi usare l'opzione -3per scp, che copia i file attraverso il tuo computer locale. Altrimenti, scp invia il comando scp tramite ssh sul primo host, quindi viene effettivamente eseguito

 ssh -p 6774 denny@67.12.21.133 scp -rp /home/denny/testapp1.txt denny@67.129.242.40:

e quindi viene usato ~ / .ssh / config del primo host remoto (67.12.21.133) invece di quello locale.

Quando hai impostato ~/.ssh/configcorrettamente, questo dovrebbe funzionare:

scp -rp3 denny@67.12.21.133:/home/denny/testapp1.txt denny@67.129.242.40:

Ovviamente, puoi anche copiare il contenuto del file ~ / .ssh / config sul tuo primo host remoto, e quindi puoi usare scp senza l' -3opzione, che probabilmente accelererà il trasferimento.

Oppure puoi usare il trucco che scp usa e usare una tale riga di comando:

ssh -p 6774 denny@67.12.21.133 scp -rp -P 6774 /home/denny/testapp1.txt denny@67.129.242.40:

(Notare il diverso caso del parametro port per ssh e scp: ssh -p 6774vs. scp -P 6774)

PS: Ho ricevuto queste informazioni dal bugzilla di OpenSSH dove l'ho inserito come bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2020


'-3' non sembra essere un'opzione valida - ottengo solo "scp: opzione illegale - 3".
Rich Sedman

8

Non ho trovato una soluzione semplice ma potresti provare a usare sshfs nel modo seguente:

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

Un altro modo potrebbe essere usare ssh (in realtà non testato con successo):

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

Attualmente non ho trovato il modo giusto per inserire le due password. Richiede alcune volte le due password ma non accetta nessuno. Forse se scambi le chiavi ssh tra gli host funziona. Perché tu non hai bisogno delle password.

Spero che questo possa essere d'aiuto? Tommaso


6

Secondo questa pagina sul blog di Linux Academy, devi semplicemente usare l' -P 6774opzione anche prima del secondo percorso remoto:

scp -rp -P 6774 denny@67.12.21.133:/home/denny/testapp1.txt -P 6774 denny@67.129.242.40:

Ogni utilizzo del -Pflag si applica solo alla posizione successiva sulla riga di comando, non all'intero comando. Qualsiasi posizione che non ha -Ptra esso e il percorso precedente (o il nome del comando [ scp]) viene impostata automaticamente la porta standard (22).


Non funziona per me. È un peccato, perché questa sembra la soluzione migliore. Il collegamento è interrotto.
david.perez,

1
Ho appena aggiornato il link (anche se ho dimenticato di accedere prima ...). Linux Academy ha deciso di ristrutturare il proprio sito. Spero che questo aiuti, alcuni!
Dan Hunsaker,

Se solo funzionasse. Ma capisco -P: No such file or directory.
Tom,

@ Tom - Su quale sistema stai eseguendo questo? Potresti avere un'implementazione diversa scpda quella indicata qui.
Dan Hunsaker,

Questo è Ubuntu 17.04.
Tom,

-2

Se è necessario trasferire dati da un server a un altro, utilizzare il comando SCP. Fare così

Premi Ctrl+ Alt+ Tsulla tastiera per aprire Terminale. Quando si apre, esegui il comando seguente.

scp -pr root@192.168.1.2:/path/to/files /destination/path

Nota: il parametro -P può essere utilizzato se si desidera menzionare il numero di porta.


2
non hai letto la domanda. Ha un problema con le porte. puoi impostare la prima porta, ma
inserisci

@gajdipajti Non ho specificato una porta nella mia risposta e l'ho aggiunta come nota. L'utente ha inoltre dichiarato di utilizzare la stessa porta. Guarda le Q. 2a e 3a riga :)
Mitch

2
Ma non funziona in questo modo, imposterai il primo con -P ma il secondo rimarrà 22. Prova. Al momento sto facendo i test, ma ancora nessuna soluzione funzionante.
gajdipajti,

Utilizzeresti l'opzione -P solo se stai usando una porta non standard.
Mitch
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.