Copie e obtenha arquivos de uma máquina conectada via ssh a outra

1

Eu li muitas respostas para perguntas muito semelhantes a esta, mas não consegui encontrar algo que realmente se encaixe no meu problema. Aqui está a situação. Eu tenho uma máquina cujo endereço é "machine1 @ address", e a partir deste eu alcanço "machine2 @ different_address". Agora, tenho que enviar / obter arquivos de / para machine2 diretamente de / no meu computador, porque não quero ocupar a memória "permanentemente" na máquina1.

Meu objetivo é automatizar esse processo escrevendo um script Python. Então, a melhor solução seria evitar abrir (eu realmente não sei como chamar, espero que você entenda) a 'página principal' da machine1, já que o script Python parava de rodar até que eu fechasse ( pelo menos, isso é o que acontece quando eu simplesmente uso o ssh).

Obrigado!

    
por Simone Bolognini 09.10.2015 / 10:31

3 respostas

1

Estou confuso com o termo 'página principal' e os nomes de usuário na forma de 'machineX'. E eu não acho que realmente é necessário usar python.

Minha solução seria:

Estabeleça um túnel ssh para machine2:

mycomputer$ ssh -L2222:different_address:22 machine1@address

Agora você pode copiar arquivos pelo túnel ou usar sshfs ou rsync ou o que precisar:

mycomputer$ scp -P 2222 machine2@address:/whatever /target_local_dir

A alternativa seria executar scp a partir do address computer, assumindo que há sshd sendo executado em mycomputer , ou apenas encadear os comandos ssh e cat do arquivo que você precisa:

ssh machine1@address ssh machine2@different_address cat /path_to_the_remote_file > /target_local_file

(distribua chaves ssh conforme necessário).

    
por 09.10.2015 / 10:47
1

Você pode usar o scp:

usuário do arquivo scp @ machine2: / home / user

ou inverso

usuário scp @ machine2: / home / user / file / local / directory

    
por 09.10.2015 / 10:54
1

Tente abrir um túnel ssh de machine1 para seu host

ssh user1@machine1-ip-address -p machine1-ssh-port -L local-port:machine2-ip-address:machine2-ssh-port -N

Por exemplo

ssh user1@machine1 -p 22 -L 8181:machine2:22 -N

Depois de executar isso em um terminal, ele solicitará a senha da máquina1. Você não deve fechar este terminal porque fechará o túnel.

Agora abra um segundo terminal e você poderá usar o ssh machine2 em sua máquina. O comando deve ser

ssh user2@machine2 -p 8181

Com isso, você terá acesso ssh à máquina2 da sua máquina local.

    
por 09.10.2015 / 11:00