Como criar um encaminhamento de porta persistente usando ssh?

2

Atualmente, estou usando o ssh para encaminhar algumas portas como esta:

Existem 3 máquinas:

  • A-host - construindo a máquina no túnel, que pode acessar B e C
  • B-host - máquina que não tem acesso a A ou C que precisa ser capaz de se conectar a C:636
  • C-host - máquina fornecendo um serviço na porta 636

A-host>ssh -R 636:C-host:636 -R 8080:C-host:8080 root@B-host

A questão é como tornar esse tunelamento persistente; para restaurá-lo, até mesmo uma ou outra máquina é reiniciada.

Eu sei que isso provavelmente exige autossh, mas não é a solução completa.

    
por sorin 03.08.2012 / 16:06

2 respostas

6

Aqui está minha solução atual, se você conhece uma melhor, eu serei graduada para aceitá-la.

Na máquina que está inicializando o tunelamento:

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:host-providing:3269 firewalled-host &

Agora, o host com firewall pode se conectar ao host local: 3269 para acessar o serviço que não estava disponível antes.

    
por 03.08.2012 / 17:22
2

Adicione o comando autossh a um serviço que gerencia os serviços do sistema.

A maioria das configurações do Linux usa init, lendo a configuração do que iniciar a partir de /etc/inittab , uma linha como rc:2:respawn:autossh <options> >>/var/log/autosshoutput 2>&1 faria o truque. Isso (se você estiver no runlevel 2, que é o caso usual de um sistema Linux em execução atualmente) iniciará o processo na inicialização e o reiniciará se ele morrer. Se você quiser que ele inicie antes da próxima reinicialização, execute telinit para informar ao processo init para reler sua configuração. Veja a man page de inittab para mais detalhes.

Algumas distribuições Linux passaram a usar o upstart para gerenciar o que o init usava (entre os outros recursos do upstart, como faz mais do que o init) - você deve encontrar muita documentação sobre isso facilmente.

    
por 03.08.2012 / 16:20