Copia arquivos através de uma conexão ssh complexa?

2

Suponha que eu tenha o host A do qual eu ssh para hospedar B , onde eu sudo -U some_role e sob ele ssh para hospedar C . Meu objetivo é um shell interativo em C .

Suponha que a partir de C não posso voltar a A .

Qual é a melhor maneira de copiar um arquivo de A para C usando a conexão construída acima? Que preparações / mudanças devo introduzir na cadeia para tornar a cópia de arquivos simples e pouco frequente possível?

É claro que posso executar cat > target_file dentro do shell interativo e copiar e colar via terminal, mas para arquivos binários grandes isso não é exatamente conveniente.

    
por 9000 18.12.2013 / 19:06

2 respostas

7

Eu considero que o hospedeiro B é, e. um gateway em uma intranet e pode se conectar ao host A e C, e. assim:

                                                                       -----------------------------------------------------------
                                                                      |                                                           |
                                                                      |                                                           |
                       ---------                                -----------                    --------------                     |
                      |A        |------------------------------|   B       |------------------|              |                    |
                       ---------                               |           |                  | C            |                    |
                                                                -----------                    --------------                     |
                                                                      |                                                           |
                                                                       -----------------------------------------------------------

Neste caso, a melhor solução é o encaminhamento de porta ssh. Eu o descrevo no link

Primeiro, em A, você encapsula a porta 2222 de B para a porta 22 de C com o comando:

ssh -L 2222:C:22 B

então você copia para a porta 22 de C, conectando-se à porta 2222 em A (localhost) com o comando:

scp -P 2222 file root@localhost:
    
por 18.12.2013 / 19:13
0

A maneira mais rápida de transferir arquivos é iniciar um servidor web temporário no diretório que contém os arquivos que você deseja copiar. Então, execute o seguinte comando no host A:

python -m SimpleHTTPServer 4000

Em seguida, no host C:

wget http://hostA.local:4000/myfile.txt

ou com endereço IP:

wget http://192.168.1.135:4000/myfile.txt

Você também pode ver os arquivos em um navegador se o host de destino tiver uma GUI.

Para parar o servidor da Web no host A, use CTRL-C.

Se você usa essa solução com frequência, convém usar o gnu screen ( link ) para que você possa continue a trabalhar enquanto o servidor da Web estiver em execução.

    
por 02.06.2017 / 15:42

Tags