Я ищу надежный способ запустить безопасный туннель при начальной загрузке на ноутбуке.
Этот туннель не будет необходим другим частям процесса начальной загрузки, но мог быть необходим в любое последующее время пользователем. Это должно "просто работать", пользователю не придется контролировать и зафиксировать его.
Безопасный туннель "вытянет в порте" из небезопасного приложения, связанного с localhost (в этом случае, база данных советов) на удаленном сервере к ноутбуку человечности.
Пример:
удаленный сервер: example.net
удаленный порт для передачи: 6379, связанный только с localhost из example.net
удаленный пользователь: mole@example.net
файл ключей: mole@example.net авторизовал ssh пару ключей без пароля, один ключ хранится в authorized_keys на сервере и другом в/root/moleKey.rsa на ноутбуке
Это работает в окне терминала над ноутбуком:
$ sudo su
...
# ssh -i /root/moleKey.rsa -L 16379:localhost:6379 mole@example.net -N &
# exit
$ telnet localhost 16379
(works fine)
^C
Таким образом я пытался поместить
ssh -i /root/moleKey.rsa -L 16379:localhost:6379 mole@example.net -N &
в/etc/rc.local
Но это не работает надежно, процесс ssh закончился, когда туннель был необходим, и я не могу найти ошибочные строки для него в системном журнале или сообщениях
Существует ли более надежный способ запустить безопасный туннель при начальной загрузке или возможно менеджера, который перезапустит безопасный туннель по мере необходимости?
У меня были те же проблемы с тем, что /etc/rc.local
не был устойчивым после перезагрузки
Upstart - хорошее решение, и это работает для меня:
# location: /etc/init/tunnel.conf
description "persistent ssh tunnel through reboots"
author "morgan mcdaris <morganmcdaris@gmail.com>"
start on (local-filesystems and net-device-up IFACE=eth0)
stop on runlevel [016]
respawn
respawn limit 5 60
script
exec su LOCAL_USERNAME -c "ssh -N -R 4040:localhost:22 -i /home/LOCAL_USERNAME/.ssh/id_rsa REMOTE_USERNAME@REMOTE_MACHINE_IP"
end script
post-start script
PID=`status tunnel | egrep -oi '([0-9]+) вам нужно ввести свои значения для: LOCAL_USERNAME
REMOTE_USERNAME
REMOTE_MACHINE_IP
после этого вы можете запустить его путем перезагрузки или:
$ sudo start tunnel
сценарии после запуска дают файл pid, если ты хочешь сделать что-нибудь в мониторе
| head -n1`
echo $PID > /var/run/tunnel.pid
end script
post-stop script
rm -f /var/run/tunnel.pid
end script
вам нужно ввести свои значения для: LOCAL_USERNAME
REMOTE_USERNAME
REMOTE_MACHINE_IP
после этого вы можете запустить его путем перезагрузки или:
$ sudo start tunnel
сценарии после запуска дают файл pid, если ты хочешь сделать что-нибудь в мониторе
Для Ubuntu 11.10+ пакет "gstm" работает нормально, предоставляя более простой способ настройки туннеля.
см.
http://web.archive.org/web/20150318153045/http://linuxers.org/article/manage-your-ssh-tunnel-redirects- graphic-using-gnome-ssh-tunnel-manager (исходная ссылка сейчас не работает)