Мне нужно подключиться через VNC с моей машины A к другой машине, принадлежащей моему другу B. У нас обоих нет возможности открыть входящие порты - интернет-провайдеры не разрешают туннелирование, если вы не купите бизнес-план на основе статического IP. Оба являются системами Linux, кстати
У нас есть веб-сервер с полным доступом, куда мы можем войти по ssh. Как настроить туннель от любого конца к серверу, чтобы VNC работал?
Я знаю, как настроить ssh-туннель между двумя системами, и считаю, что это несложно сделать A-> B-> C, запустив сначала ssh от A до B, а затем от B до C.
Но мне нужны A-> C и B-> C, а не A-> B и B-> C
В основном я думаю, что мне нужен прокси-сервер - можно ли это сделать с помощью SSH или даже какой-то сетевой магии Linux?
Это может быть, а может и не быть тем ответом, который вы ищете, но стоит проверить две услуги:
Они делают примерно то же самое. Оба позволяют создавать виртуальные частные сети между несколькими компьютерами без необходимости настройки брандмауэра или переадресации портов. Обе службы имеют бесплатный уровень, хотя, если вам нужно много подключенных компьютеров, ZeroTier позволяет использовать больше компьютеров в своей бесплатной версии. Оба работают в Linux, Windows и Mac OS (ZeroTier работает и на множестве других платформ).
Допустим, C - это веб-сервер, к которому вы оба (A: вы и B: ваш друг) имеете доступ.
vim / и т.д. / ssh / sshd_config
добавьте «GatewayPorts yes» внизу, чтобы удаленный хост слушал интерфейс 0.0.0.0 вместо интерфейса 127.0.0.1
GatewayPorts да
ssh -i auth.pem -R 0.0.0.0:port1:localhost:port2 xxx@xxx.xxx.xxx
Теперь вы можете подключиться к порту 2 C с помощью VNC, просматривая экран B.