SSH-туннель с автоматическим перезапуском

()

Достаточно часто возникает необходимость поднять туннель с целью пробросить некоторый порт. Сделать это достаточно просто с помощью SSH, однако у этого метода есть недостаток - в случае пропадания связи туннель ломается и с появлением связи не восстанавливается самостоятельно.

Решить проблему можно достаточно достаточно простым скриптом. Однако есть более интересное решение - запускать ssh из inittab. Тогда перезапускаться туннель будет самой программой init.

В этой заметке будет рассказано об организации ssh-туннеля с машины под управлением Gentoo на машину под управлением любой ОС семейства *nix.

Для начала нам нужно настроить авторизацию в SSH с помощью RSA-ключей. Как это сделать описано здесь. Однако для ленивых есть замечательный скрипт - ssh-installkeys. Для начала установим его (от имени пользователя root):

emerge ssh-installkeys

А теперь от имени простого пользователя настроим авторизацию с помощью ключей:

ssh-installkeys user@some.host

Убедимся что теперь можно логиниться на удалённый хост не вводя пароль:

ssh user@some.host

Теперь снова заходим как супер пользователь и начинаем настраивать туннель. Для этого нужно в файл /etc/inittab добавить следующую строчку:

rr:3456:respawn:su -l -c "ssh -R 2222:localhost:22  user@some.host" user

И далее заставляем программу init перечитать inittab:

telinit q

Всё. Теперь заходим на удалённый хост и пробуем залогиниться:

ssh -p 2222 user@localhost

Если нужно чтобы можно было логиниться не только с localhost а вообще с любого адреса - строка в inittab должна принять вид:

rr:3456:respawn:su -l -c "ssh -R some.host:2222:localhost:22  user@some.host" user

Особых комментариев к выполняемым командам я думаю не нужно. Всё достаточно элементарно, и если что-то не понятно - достаточно глянуть в man inittab и/или man ssh.

Ключевые слова: ssh, ssh-installkeys, inittab, telinit.

Комментарии:

Новый комментарий



© 2006-2016 Вадим Калинников aka MooSE

Стиральные и сушильные машины профессиональные профессиональная стиральная машина.