rsync sobre o túnel ssh

5
----------         /|                      /|             ------------
|  Home  |        | |                     | |             |    Work   |
|        |--------| |---------------------| |-------------|           |
|ssh-serv|   Firewall:Port-22=open     Firewall           |           |
----------        | |                     | |             ------------
                  |/                      |/

Aqui está o cenário para a foto acima:

Um trabalhador tem acesso à sua máquina Work e também configurou um servidor Home ssh. O trabalhador quer acessar sua máquina Work a partir de seu PC @ Home, mas a política da empresa restringe o acesso através do Firewall @ Work, mas permite que ele se conecte via túnel ssh reverso. Então o worker dá o seguinte comando de sua estação de trabalho @ Work:

ssh -fN -R 19999:localhost:22 Home-user@Home

Agora, a partir de seu PC @ Home, ele é capaz de fornecer o seguinte comando e conectar-se ao servidor ssh de sua estação de trabalho @ Work:

ssh -v Work-user@localhost -p 19999

É possível para o trabalhador usar o rsync para copiar um diretório de seu PC @ Home para sua estação de trabalho @ Work usando o túnel existente?

    
por Vaios Argiropoulos 19.07.2013 / 21:52

4 respostas

6

Acho que o recurso que você está procurando é chamado de compartilhamento de conexão. Adicione isto ao seu arquivo $HOME/.ssh/config :

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r

excerto # 1 de SSH pode fazer isso? Dicas de produtividade para trabalhar com servidores remotos

Fortunately OpenSSH has a feature which makes it much snappier to get another terminal on a server you’re already connected to: connection sharing.

trecho # 2

Shared connections aren’t just a boon with multiple terminal windows; they also make copying files to and from remote servers a breeze. If you SSH to a server and then use the scp command to copy a file to it, scp will make use of your existing SSH connection ‒ ... Connections are also shared with rsync, git, and any other command which uses SSH for connection.

Referências

por 19.07.2013 / 22:05
2

Você pode controlar o comando ssh (estritamente falando, o comando rsh , embora o padrão seja ssh nos dias de hoje) que rsync usa de duas maneiras.

  • Definir RSYNC_RSH variável de ambiente
  • Ao passar o -e flag

Você pode definir qualquer um desses para todos os sinalizadores necessários para que ssh se conecte.

Por variável de ambiente:

home$ RSYNC_RSH="ssh -p 19999"
home$ rsync somelocalfile Work-user@localhost:~

Por -e flag:

home$ rsync -e "ssh -p 19999" somelocalfile Work-user@localhost:~
    
por 19.07.2013 / 22:46
2

A maneira mais fácil de lidar com configurações complexas de SSH, como túneis, é criar um alias em seu ~/.ssh/config arquivo. Por exemplo, se você determinou que ssh -fN -R 19999:localhost:22 Home-user@Home funciona para criar um túnel e ssh -v Work-user@localhost -p 19999 trabalha para usá-lo, crie aliases para eles:

Host work-tunnel
Hostname Home
Username Home-user
RemoteForward 19999 localhost:22

Host workstation
Hostname localhost
Username Work-user
Port 19999

Em seguida, execute ssh -fN work-tunnel para estabelecer o túnel e use ssh workstation para efetuar login na estação de trabalho.

No que diz respeito a outros aplicativos, workstation é um host como qualquer outro ao qual você se conecta com o SSH. Eles não se importam com o que a SSH está fazendo sob o capô. Então você pode usá-los como de costume. Por exemplo, rsync somefile workstation:somedir copia um arquivo para a estação de trabalho.

    
por 21.07.2013 / 02:13
0

sim, como o trabalhador está acessando pela porta 22 do ssh, SSH out e in é permitido através do firewall. Você pode verificar se não há política escrita para o ssh na sua lista de acesso do firewall.

    
por 19.07.2013 / 22:07