Copie o diretório usando o túnel ssh

3

O seguinte comando está funcionando como esperado.

ssh [email protected] "ssh [email protected] 'cat test.txt'" > /home/shantanu/test.txt

O que eu preciso fazer é copiar o diretório inteiro em vez de um único arquivo.

É possível usar rync com tunelamento SSH?

    
por shantanuo 28.09.2011 / 09:01

4 respostas

2

Você pode canalizar tar.

por exemplo,

ssh [email protected] "ssh [email protected] 'tar cf - test_directory'" | tar xf -
    
por 28.09.2011 / 09:38
6

Você pode usar scp para copiar arquivos únicos ou múltiplos e também usar rsync com um transporte ssh:

scp -r localdirectoryname username@hostname:/remotepath

e

rsync -av localdirectory username@hostname:/remotepath 

Ambos os programas também funcionam ao contrário, com a parte remota como origem e o local como o destino.

Veja man scp e man rsync .

Editar

Se você realmente precisa de um servidor intermediário, você pode usar o encaminhamento de porta ssh:

Em um shell, use este comando para estabelecer um encaminhamento de porta:

ssh -NL 10022:10.199.199.91:22 [email protected]

Isso conecta a porta 10022 em sua máquina local com a porta 22 em 10.199.199.91 , mas não abre um shell, apenas bloqueia até você terminá-lo.

Depois, em outro shell / xterm, você pode usar

scp -r -P 10022 localpath soak@localhost:/remotepath 

mas é preciso estar ciente de que soak@localhost realmente aponta para [email protected] ao inserir suas credenciais.

Editar 2, agora apresentando o rsync

Como você perguntou especificamente sobre o rsync, aqui está como usar o rsync em vez do scp. Ele requer o mesmo encaminhamento de porta ativado como a variante scp :

rsync -av --rsh="ssh -p 10022" localpath soak@localhost:/remotepath 

e lembre-se de que você está realmente se conectando a [email protected] .

    
por 28.09.2011 / 09:10
2

Outra maneira é usar o SSH Port Forwarding .

Primeiro, execute o seguinte comando no seu computador:

$ ssh -N -f -L 2302:10.199.199.191:22 [email protected]

Isso alocou um soquete para escutar a porta 2302 no host local. Sempre que uma conexão se conectar a essa porta, ela será encaminhada para 10.199.199.191:22 .

Você pode copiar uma pasta em 10.199.199.191 para sua máquina com:

$ scp -r -P 2302 soak@localhost:/path/to/folder /path/to/destination/dir
    
por 28.09.2011 / 09:56
0

Também está disponível o ProxyCommand do ssh.

De Mortos-vivos :

Host internal.hostname.tld internal
  User          merdely
  HostName      internal.hostname.tld
  ProxyCommand  ssh [email protected] nc %h %p 2> /dev/null
    
por 28.09.2011 / 20:12