Como posso fazer um túnel ssh persistente?

2

Eu tenho um laptop Mac e gostaria de ter um túnel ssh persistente para que eu possa 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 quando eu inicializá-lo) e inicie o túnel automaticamente quando possível.

Eu tentei colocar uma linha @reboot autossh no meu crontab, mas descobri que as sessões começaram com autossh desconectar de vez em quando e autossh desiste se a primeira tentativa falhar. 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 vou ter que ficar feliz com isso por enquanto?

    
por Blacklight Shining 09.11.2012 / 23:00

1 resposta

1

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

Eu não acho que ele tenha bastante razão; você usaria a chave "KeepAlive" (com um valor "true") em vez do par de chave / valor "OnDemand / false" obsoleto. Além disso, eu não sei por que ele está encaminhando para a porta idêntica no host remoto (1666) como vs 22. Ainda assim - você começa a idéia. Eu tenho o meu up & correndo ok para o nosso servidor web. Muito mais elegante que um loop infinito.

Ah, e em vez de Lingon que ele menciona, você pode usar o maravilhoso LaunchControl para configurá-lo, modificá-lo e monitorá-lo. Se você não está familiarizado com o launchctl, sugiro ler o manual no programa ou no site para entender o que está acontecendo. Desculpe - eu teria ligado ao primer, mas não construí o suficiente de um representante: /

    
por 04.08.2016 / 17:27