Como mencionado nos comentários, sugiro usar sftp :
$ sftp remote
user@remote's password:
Connected to remote.
sftp> pwd
Remote working directory: /home/user
sftp> cd /etc
sftp> get fstab
Fetching /etc/fstab to fstab
/etc/fstab 100% 435 0.4KB/s 00:00
sftp>
Outra abordagem bastante hacky seria abusar dos recursos de encaminhamento de porta do SSH, combinados com nc (a.k.a. netcat ). nc é o "canivete suíço da rede" (o menor… também há socat , que é mais o MultiTool®;) - uma espécie de cat com recursos de rede.
A ideia: informar ssh para encaminhar uma porta remota da sua máquina remota para uma porta local no lado do cliente e usar essa conexão para canalizar seus dados usando nc :
-
Conecte-se a
$remote, estabelecendo o encaminhamento de porta remota:client:~> ssh -R 8888:localhost:8888 $remoteIsso estabelece uma conexão normal com
$remote, mas também informasshpara escutar na porta8888no lado remoto. Se algo se conectar à porta8888no lado remoto,sshabrirá uma conexão comlocalhost, porta8888no lado do cliente (assim, o cliente) e encaminhará qualquer coisa enviada para a porta do lado remoto8888para esta porta. -
Ouça na porta do lado do cliente
8888(então,sshtem algo para se conectar), usandonc. Nós direcionamos a saída (do lado do cliente)ncparatar, já que enviaremos um fluxotarpara ele depois:client:~> nc --recv-only -l -p 8888 | tar xvf - -
No lado remoto, altere seu diretório de trabalho atual onde você quiser.
-
Se você estiver no lugar certo, use
tarpara coletar os arquivos que deseja copiar e canalize-os para (lado remoto)nc, conectando-se à porta aberta do lado remoto:server:~> cd /path/with/those/files server:files> tar cvf - ./some/files | nc --send-only 127.0.0.1 8888 -
Magic ™ acontece.
Nota: existem pelo menos três implementações diferentes de nc , todas com uma sintaxe ligeiramente diferente; --send-only e --recv-only são AFAIK apenas suportados por netcat6 . Se você tem uma implementação que não suporta essas opções (ou similares), você terá que olhar se tar saiu e pressionar Ctrl - C no remetente lado. nc normalmente espera para sempre e não manipula EOF ( --send-only diz para fazer e automaticamente fecha a conexão).
Outra observação: Você também pode usar nc diretamente, mas usando o encaminhamento de porta ssh , seus dados passam pela conexão SSH, evitando dois problemas: primeiro, seus dados são ainda enviado criptografado e, segundo, isso também funciona se o seu cliente estiver por trás de um firewall NAT ou não puder ser acessado diretamente de seu $remote .