É possível fazer o SCP de um remoto para o local enquanto estiver logado no remoto e sem saber o endereço IP do local?

29

Eu regularmente me vejo querendo copiar um arquivo da sessão de terminal remoto para a minha máquina local. Geralmente eu saio da sessão remota e chamo uma transferência scp do local para copiar o arquivo de remoto para local. Mas isso parece um pouco longo. Eu gostaria de transferir o arquivo enquanto logado no controle remoto por SSH para economizar tempo. Minha máquina local está conectada à Internet a partir de um intervalo de IP dinâmico, por isso nunca tenho certeza de como me conectar a ela remotamente. Mas certamente, como a sessão remota se origina do meu laptop, deve haver um atalho no scp para voltar ao meu laptop ... Certo?

    
por jnthnclrk 30.05.2011 / 14:00

6 respostas

20

Você pode usar o tunelamento SSH para isso.

Usando o encapsulamento, você pode encaminhar uma porta TCP da sua máquina local para a máquina remota ou da máquina remota para a sua máquina local. Eu uso freqüentemente para encaminhar Portas SMTP ou IMAP de uma máquina remota atrás de um firewall para minha máquina local (e depois acessar os serviços localmente, como se estivessem sendo executados localmente).

Para encaminhar a porta 22 (SSH) da sua máquina local para a máquina remota, tente isto:

ssh -R12345:localhost:22 yourremoteuser@remotemachine

(Note que localhost refere-se ao nome local da máquina remota)

Depois de executar isso, você poderá fazer o ssh voltar para casa usando:

ssh -p12345 [email protected]

Ao usar scp, você faria algo como (scp tem um P maiúsculo para encaminhamento de porta):

scp -P12345 filename 127.0.0.1:/tmp/filename

O encaminhamento de porta na outra direção (de remoto para local) usa -L em vez de -R.

Os comandos acima assumem que você está usando um terminal ssh client. Clientes gráficos, como o PuTTY for Windows, também suportam tunelamento

    
por 30.05.2011 / 15:49
4

Tente o seguinte na linha de comando da máquina remota, talvez seja necessário ativar o encaminhamento de porta no roteador.

scp <file on remote machine> ${SSH_CLIENT%% *}:<directory on local machine>

Fonte: Facilmente scp um arquivo de volta para o host que você está conectando (commandlinefu.com)

    
por 13.06.2014 / 00:09
1

Talvez zssh ?

zssh (Zmodem SSH) is a program for interactively transferring files to a remote machine while using the secure shell (ssh). It is intended to be a convenient alternative to scp , allowing to transfer files without having to open another session and re-authenticate oneself.

zssh is an interactive wrapper for ssh

Ele usa o venerável rz, sz implementações de transferência de arquivos zmodem.

    
por 19.01.2012 / 13:40
1

Upvoted esta pergunta, isso é algo que eu gostaria de fazer facilmente também.

Aqui está uma resposta relacionada: Como faço o SCP da máquina remota para a máquina local quando estou fora da minha rede doméstica?

You need to allow access to ssh from outside your network. This is done by forwarding a port on the your broadband router to the lan ip of your server. However there's some security concerns with allowing ssh access from outside, so you may also want to look into methods to secure ssh, particually key-based authentication and disable password authentication entirely.

    
por 10.08.2012 / 17:45
0

Uma solução seria suspender a sessão ssh na máquina local, executar a cópia na máquina local e, em seguida, retomar sua sessão ssh de onde você parou.

Por exemplo, suponha que eu esteja conectado a myuser @ remote , e eu quero copiar o arquivo lol.txt para o meu computador local. Primeiro eu quero suspender o ssh na minha máquina local. Normalmente você usaria Ctrl - Z para suspender, mas isto não funcionará em ssh porque será enviado para o shell remoto. Em vez disso, você deve usar a seqüência de escape ssh Enter ~ . Então, para suspender o ssh, pressione Digite ~ Ctrl - Z . Agora você pode executar comandos em sua máquina local e fazer

user@localmachine:~$ scp user@remote:/path-to-file/lol.txt /dest-path/lol.txt

para copiar o arquivo e depois retornar para ssh exatamente onde você o deixou com

user@localmachine:~$ fg

    
por 13.04.2013 / 08:50
0

Se você quer uma solução mais simples, basta abrir a conta do dropbox, ir para a máquina remota e fazer wget (versão modificada do aqui ): wget --no-check-certificate https://www.dropbox.com/s/2123jshf/ABC.pdf?dl=1 -O abc.pdf

    
por 29.10.2015 / 16:55