SCP com duas portas diferentes

13

Como posso usar o comando scp para copiar arquivos entre dois servidores remotos do meu PC local?

servidor remoto 1: IP = 67.12.21.133 & amp; port = 6774

servidor remoto 2: IP = 67.129.242.40 & amp; port = 6774

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

Ocorre um erro após fornecer a senha de 67.12.21.133,

ssh: conecta-se ao host 67.129.242.40 porta 22: Conexão recusada

conexão perdida

    
por linuxspider 21.06.2012 / 07:15

4 respostas

17

Você pode usar ~/.ssh/config para especificar as portas a serem usadas para os hosts (e para definir muitas outras coisas boas; verifique a página de manual man ssh_config ):

# ~/.ssh/config

Host 67.12.21.133
  Port 6774

Host 67.129.242.40
  Port 6774

Ao fazer isso, você tem que usar a opção -3 para scp, que copia os arquivos através de sua máquina local. Caso contrário, scp emite o comando scp via ssh no primeiro host, então ele é executado

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

e então o ~ / .ssh / config do primeiro host remoto (67.12.21.133) é usado no lugar do seu local.

Quando você configurou seu ~/.ssh/config corretamente, isso deve funcionar:

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

Claro, você também pode copiar o conteúdo do arquivo ~ / .ssh / config para o seu primeiro host remoto, e então você pode usar o scp sem a opção -3 , o que provavelmente irá acelerar a transferência.

Ou você pode usar o truque que o scp usa e usar essa linha de comando:

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

(observe o caso diferente do parâmetro de porta para ssh e scp: ssh -p 6774 vs. scp -P 6774 )

PS: Eu recebi esta informação do bugzilla do OpenSSH onde eu inseri isso como um bug: link

    
por daniel kullmann 21.06.2012 / 16:10
8

Não encontrei uma solução fácil, mas você poderia tentar usar o sshfs da seguinte maneira:

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

Outra maneira seria usar o ssh (na verdade, não testado com sucesso):

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

Atualmente, não encontrei o caminho certo para inserir as duas senhas. Ele pede algumas vezes pelas duas senhas, mas não aceita ninguém. Talvez, se você trocar as chaves ssh entre os hosts, funcione. Porque você não precisa das senhas.

Espero que isso ajude? Thomas

    
por tpf 21.06.2012 / 09:07
5

De acordo com esta página no blog da Linux Academy, você simplesmente precisa usar a opção -P 6774 logo antes do segundo caminho remoto:

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

Cada uso do sinalizador -P aplica-se somente ao próximo local na linha de comando, não ao comando inteiro. Qualquer local que não tenha um -P entre ele e o caminho anterior (ou o nome do comando [ scp ]) será padronizado para a porta padrão (22).

    
por Dan Hunsaker 12.06.2013 / 03:08
-2

Se você precisar transferir dados de um servidor para outro, use o comando SCP. Para fazer isso

Basta pressionar Ctrl + Alt + T no seu teclado para abrir o Terminal. Quando se abre, execute o comando abaixo.

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

Nota: O parâmetro -P pode ser usado se você quiser mencionar o número da porta.

    
por Mitch 21.06.2012 / 08:11

Tags