encaminhamento de porta SSH com reconexão automática, execução de script na inicialização

4

Em suma, toda vez que meu computador inicializa, eu gostaria de iniciar uma conexão de encaminhamento de porta ssh que se reconectará com o servidor se a conexão cair. O computador é o Debian Wheezy x64.

Uma conexão inicial e bem-sucedida pode ser feita da seguinte maneira:

screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com

Como isso pode ser feito para ser executado na inicialização? (preferencialmente por usuário, não root). Aqui está como eu tenho iniciado programas na inicialização:

rc.local chama meu script de inicialização da seguinte forma:

su -c "/home/username/scripts/startup" username

Atualmente, / home / username / scripts / startup contém o seguinte:

screen -dmS program1 python my-python-program
screen -dmS program2 python my-python-program2
screen -dmS autossh autossh -M 29000 -N -v -p 22 -l user -i /path/to/.ssh/id_rsa -L port:my-computer:port my-server.com

Uma vez inicializado, todos os três programas parecem estar em execução (por lista de tela -ls). Não há problema com o program1 ou o programa 2. No entanto, o autossh não está realmente encaminhando a porta.

A diferença entre uma conexão bem-sucedida executada por mim e uma conexão mal-sucedida executada na inicialização é que uma conexão bem-sucedida tem a linha:

debug1: channel 4: free: direct-tcpip: listening port 8082 for 192.168.1.104 port 80, connect from ::1 port 59681, 
nchannels 5

Enquanto a conexão mal sucedida continua tentando assim:

debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 4: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 5: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 6: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 7: new [direct-tcpip]
debug1: Connection to port 8082 forwarding to 192.168.1.104 port 80 requested.
debug1: channel 8: new [direct-tcpip]

Alguma ideia do que está errado? Por que um programa funcionaria bem quando eu o executasse manualmente, mas não dentro do meu script de inicialização?

    
por Oddworld 27.12.2012 / 21:01

1 resposta

3

Confira o programa autossh para reconexão automática. tela não vai atrapalhar porque você sempre especifica comandos externos e sinalizadores para esses comandos após sinalizadores específicos da tela.

    
por 28.12.2012 / 07:30