У меня есть ноутбук, который я использую в основном как настольный компьютер, но иногда он перемещает сети. У меня есть vps со статическим адресом, и я хочу перенаправить порты с vps на ноутбук, чтобы я мог добраться до портативного компьютера с публичного адреса, даже если ноутбук находится за маршрутизатором без настройки переадресации портов.
Возможно ли это, запустив команду / скрипт на ноутбуке при запуске?
Все работает под управлением Linux, если это вообще имеет значение, я пытаюсь перенаправить трафик minecraft с vps с общедоступным адресом и без памяти на ноутбук с большим объемом памяти, но без общедоступного адреса, который иногда перемещается в разные сети. Возможно ли это как-то с ssh?
Спасибо заранее за любую помощь.
Как правильно заметил Хауке Лагинг - соединение ssh может быть прервано.
Вы должны использовать autossh
для автоматического запуска и перезапуска туннелей в случае сбоя.
Обычный способ - создание VPN (например, с OpenVPN). Но вы тоже можете использовать SSH.
ssh -R [bind_address:]port:host:hostport
Вы можете автоматизировать это, используя ключи без парольной фразы, но прерванные соединения SSH не перезапускаются автоматически. Таким образом, было бы полезно выполнять вызов SSH из цикла. Хотя OpenVPN был бы более полезным.
Редактировать 1
Если вы хотите перенаправить другие удаленные адреса, кроме localhost, не забудьте поставить
GatewayPorts yes
в sshd_config
файл для сервер и после этого перезапустите сервер. Вы должны использовать один из этих форматов ssh
затем команда:
-R 1.2.3.4:port:host:hostport
-R \*:port:host:hostport # the \ being for the shell only
-R :port:host:hostport
В host
адрес на местный сторона (обычно localhost
или один из других IP-адресов хоста).
В твоем ~/.ssh/config
файл, вы можете определить порт переадресации следующим образом:
Host alias
HostName 12.34.56.78
[Port 12345]
[User patrick]
[LocalForward 6900 localhost:6900]
Может использовать dyndns на ноуте?
Или вы можете добавить небольшой веб-скрипт на VPS (скрипт обновит брандмауэр), и ноутбук может запросить эту страницу с помощью wget / curl при запуске.
Сценарий может быть сценарием bash / shell и выполняться через ssh, но может быть сложнее найти соединяющийся IP-адрес из сценария оболочки (например, $ _SERVER ['REMOTE_ADDR'])