Я собираюсь развернуть несколько машин в ближайшем будущем, которые будут позади маршрутизаторов. Невозможно настроить динамический DNS на каждом маршрутизаторе и перенаправлении портов, поэтому есть способ, которым я могу настроить эти машины для инициирования соединения TCP с моим компьютером, а затем заставить мой компьютер инициировать соединение SSH с удаленным компьютером через это соединение?
IE:
COMPUTER A OPENS TCP CONNECTION TO COMPUTER B
COMPUTER B OPENS SSH CONNECTION OVER THE EXISTING TCP CONNECTION TO COMPUTER A
COMPUTER B NOW HAS SSH CONNECTION TO COMPUTER A
Возможно ли это, и если да, то как я могу это сделать?
Ответы:
В комплект
/etc/ssh/sshd
для компьютера Б :С компьютера А :
С компьютера Б :
Обратите внимание, что 2222 - это произвольный номер порта, который я выбрал. Этот порт на компьютере B будет затем туннелирован обратно через соединение SSH, инициализированное на компьютере A с портом 22. Если у вас есть несколько машин, вы должны использовать разные порты для каждой машины.
Для вашего случая использования вы, вероятно, захотите запустить его из скрипта, чтобы вы могли сделать его демоном и периодически пытаться повторно подключиться, если ссылка была удалена. Вы, вероятно, захотите специальную учетную запись с оболочкой только
/bin/true
на компьютере B для обработки входящих соединений. Затем вы можете настроить либо одну клавишу, либо несколько клавиш для каждой машины, которой разрешено «звонить домой».На компьютере А вы могли бы найти
-n
,-N
и-T
опции полезных отключить его от локального ввода (так что он может работать в фоновом режиме), а не пытаться выполнить любую удаленную команду, просто открыть туннель, а не создавать терминал.Большинство обычных методов порождения демона не очень хорошо работают с настройкой сетевого туннеля, подобного этому. Проблема с сетевым подключением заставила бы его попытаться сломать стену, чтобы пройти. Простая петля с ожиданием сна должна помочь. Десять минут - это хорошее число, потому что оно не затопляет сеть и не регистрирует файлы с попытками, если есть проблема (например, компьютер B находится в автономном режиме), но все равно возвращает вас достаточно быстро, если соединение разорвано.
Такой скрипт можно запустить при загрузке
/etc/rc.local
. Ваше первое изменение для входа в систему начнется примерно через десять минут после загрузки компьютера А.источник
/etc/ssh/sshd_config