Como posso fazer um túnel ssh persistente?

Como posso fazer um túnel ssh persistente?

Eu tenho um laptop Mac e gostaria de ter um túnel ssh persistente para poder sempre fazer login de fora da rede local. Estou procurando algo que funcione quando o servidor não puder ser acessado inicialmente (por exemplo, se eu não tiver uma conexão com a Internet ao inicializá-lo) e que inicie automaticamente o túnel quando possível.

Tentei colocar uma @reboot autosshlinha em meu crontab, mas descobri que as sessões iniciavam com autosshdesconexão de vez em quando e autossheram encerradas se a primeira tentativa falhasse. Minha solução atual é um pequeno script e um cronjob:

# crontab
/home/blackl/bin/script &!

# script
#!/bin/sh
while true; do ssh -Ngn -R $some_port:localhost:22 $server; sleep 30; done;

Existe uma maneira melhor de fazer isso ou terei que ficar feliz com isso por enquanto?

Responder1

Desculpe, esta é uma resposta muito tardia e você já deve ter encontrado essa solução, masaquié como isso pode ser feito usando o mecanismo launchctl do OS X.

Eu não acho que ele tenha conseguidobastantecerto; você usaria a chave "KeepAlive" (com um valor "true") em vez do par chave/valor "OnDemand/false" obsoleto. Além disso, não sei por que ele está encaminhando para a porta idêntica no host remoto (1666) como vs 22. Ainda assim - você entendeu. Eu tenho o meu instalado e funcionando bem em nosso servidor web.Muitomais elegante que um loop infinito.

Ah, e em vez deLingonque ele menciona, você pode usar o maravilhosoControle de lançamentopara configurá-lo, modificá-lo e monitorá-lo. Se você não está familiarizado com o launchctl, sugiro fortemente a leitura da cartilha do programa ou do site para entender o que está acontecendo. Desculpe - eu teria vinculado à cartilha, mas não consegui um representante suficiente :/

informação relacionada