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

Автозапуск Autossh в Ubuntu 10.04 - сбой после выключения

Я использую выскочку, чтобы поддерживать обратный туннель ssh, используя автоматический ssh, аналогичный Использование Upstart для управления обратным туннелем AutoSSH.

Это работает нормально, за исключением того, что после ручного отключения питания я больше не могу подключаться к машине через «центральный сервер» через туннель. Я получаю «ssh_exchange_identification: соединение закрыто удаленным хостом». Процесс autossh является работает на клиенте. Я могу подключиться снова после перезапуска сети.

Я пытаюсь понять, почему это постоянно дает сбой после выключения вручную. Возможно ли, что мне нужно выполнить некоторую очистку при запуске, которая позволила бы туннелю работать в этой ситуации, или есть другие шаги по отладке / устранению неполадок, которые я могу предпринять, чтобы определить проблему?

Машина A - это клиентская машина, использующая autossh. Этот компьютер находится за брандмауэром и использует следующую команду в upstart для создания туннеля ssh:

/usr/bin/autossh -fN -i /keyfile -o StrictHostKeyChecking=no -R 20098:localhost:22 user@centralserver

Машину B мы назовем «центральным сервером», который находится в облаке и является хостом. Эта машина является "центральным сервером" в приведенной выше команде.

Когда машина A жестко выключена и снова включена, я не могу подключиться к ней по SSH с моей машины (C) на машину B в облаке, а затем использовать следующую команду, чтобы добраться до машины A:

ssh -p 2098 user@localhost

Опять же, после перезагрузки клиента (A) это работает нормально. Проблема возникает только после резкого отключения питания. Есть процессы autossh, которые выполняются на клиентском компьютере (A) после выключения и резервного копирования, но они, похоже, просто не выполняют свою работу.

Правда, когда клиенты с запущенным autossh не завершали корректное завершение работы, экземпляры ssh все еще существуют на сервере. Чтобы решить эту проблему, попробуйте убить эти экземпляры. я использовал killall -u и это работает. После этого autossh успешно повторно подключается к серверу, и я могу подключиться к клиенту через ssh. На клиенте, где работает autossh, я также установил параметр AUTOSSH_GATETIME=0.

Проблема заключалась в том, что система некорректно завершала работу. Я установил острый который добавляет скрипт powerbtn.sh в / etc / acpi, который вызывает завершение работы при нажатии кнопки питания.

Я нашел этот урок полезным и понятным:

http://jiang925.com/content/tunnel-through-firewall-using-reverse-ssh-and-vpn-dd-wrt

они добавили команду autossh в /etc/rc.local, чтобы она выполнялась при запуске.