Script de inicialização do OpenBSd para túnel VPN ssh

2

Eu tenho um servidor que hospeda túneis SSH e clientes do OpenBSD 4.5 conectados a ele.

As coisas funcionam muito bem, mas estou precisando automatizar a conexão do cliente para o servidor. Assim, se o cliente for reiniciado acidentalmente, a conexão será iniciada sem supervisão.

Portanto, deve ser tão simples quanto incluir a conexão ssh em um script de inicialização. No entanto, eu falhei miseravelmente ao incluí-lo em /etc/rc.local, que é o arquivo em que geralmente faço esse tipo de coisa.

Agora mesmo estou usando autossh para também reiniciar a conexão, se necessário, e o script que Eu coloquei em /etc/rc.local segue:

#!/bin/sh
#
# Example script to start up tunnel with autossh.
#
# This script will tunnel 2200 from the remote host
# to 22 on the local host. On remote host do:
#     ssh -p 2200 localhost
#
# $Id: autossh.host,v 1.6 2004/01/24 05:53:09 harding Exp $
#

ID=root
HOST=example.com

#AUTOSSH_POLL=600
#AUTOSSH_PORT=20000
#AUTOSSH_GATETIME=30
#AUTOSSH_LOGFILE=$HOST.log
#AUTOSSH_DEBUG=yes 
#AUTOSSH_PATH=/usr/local/bin/ssh
export AUTOSSH_POLL AUTOSSH_LOGFILE AUTOSSH_DEBUG AUTOSSH_PATH AUTOSSH_GATETIME AUTOSSH_PORT

autossh -2 -f -M 20000 ${ID}@${HOST}

O script se destaca bem quando executado manualmente, então incluo-o no /etc/rc.local como

echo -n 'starting local daemons:'

if [ -x /usr/local/sbin/autossh.sh ]; then
   echo -n 'ssh tunnel'
   /usr/local/sbin/autossh.sh
fi

echo '.'

Eu também tentei chamá-lo de /etc/hostname.tun0 no caso de haver problemas com o /etc/rc.local não ser chamado no momento certo em que as conexões de rede estão prontas, então eu usaria:

inet 10.254.254.2 255.255.255.252 10.254.254.1
!/usr/local/sbin/autossh.sh

Sua opinião é muito apreciada.

    
por manthis 22.08.2012 / 03:12

1 resposta

0

Não consegui concluir a sua pergunta: tem a certeza de que o seu autossh é executado? Se você não encontrar o túnel aberto na reinicialização, pode ser que ele nem sequer tenha sido iniciado ou que tenha sido concluído imediatamente devido a um erro. Se a ordem para verificá-lo, você pode inserir uma chamada para o comando "logger" e registrar uma mensagem via syslog antes e depois de executar o autossh, assim você tem certeza que ele é executado. Por favor, inclua a variável shell $ rc na segunda chamada para o comando "logger".

Outra opção seria executar ssh (sem autossh) a partir do / etc / inittab, conforme explicado nesta outra pergunta: runuser em rc.local

    
por 07.12.2012 / 17:12