Você pode canalizar tar.
por exemplo,
ssh [email protected] "ssh [email protected] 'tar cf - test_directory'" | tar xf -
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?
Você pode canalizar tar.
por exemplo,
ssh [email protected] "ssh [email protected] 'tar cf - test_directory'" | tar xf -
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]
.
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
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
Tags ssh ssh-keys ssh-tunnel