Назад | Перейти на главную страницу

Сценарий инициализации OpenBSD для туннеля ssh VPN

У меня есть сервер, на котором размещены туннели SSH, и к нему подключаются клиенты Openbsd 4.5.

Все работает нормально, но мне нужно автоматизировать соединение от клиента к серверу. Таким образом, если клиент случайно перезагружается, соединение инициируется автоматически.

Таким образом, это должно быть так же просто, как включить соединение ssh в сценарий инициализации. Однако мне ужасно не удалось этого сделать, включив его в /etc/rc.local, это файл, с которым я обычно делаю подобные вещи.

Прямо сейчас я использую автосш чтобы также перезапустить соединение, если необходимо, и сценарий, который я помещаю в /etc/rc.local, следует:

#!/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}

Скрипт отлично отделяется при запуске вручную, поэтому я просто включаю его в /etc/rc.local как

echo -n 'starting local daemons:'

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

echo '.'

Я также пробовал вызывать его из /etc/hostname.tun0 на случай, если могут возникнуть проблемы с вызовом /etc/rc.local в нужное время, когда сетевые соединения готовы, поэтому я бы использовал:

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

Ваш вклад очень признателен.

Мне не удалось полностью понять ваш вопрос: вы уверены, что ваш autossh запущен? Если вы не обнаружите, что туннель открыт после перезапуска, возможно, он даже не запущен или завершился немедленно из-за ошибки. Если хотите проверить это, вы можете вставить вызов команды "logger" и записать сообщение через syslog до и после запуска autossh, чтобы вы были уверены, что он запущен. Включите переменную оболочки $ rc во второй вызов команды "logger".

Другой вариант - запустить ssh (без autossh) из / etc / inittab, как описано в этом другом вопросе: runuser в rc.local