Итак, если я понял ваш вопрос, у вас есть:
- 2 ПК во внутренних сетях.
- Вы не имеете никакого влияния на маршрутизаторы в любой сети.
И вы хотите:
- Настройте публичный сервер (PS), на котором размещается служба SSH (я полагаю, порт 22).
- Подключите ПК1 и ПК2 к PS (Исходящий трафик, без настройки маршрутизатора).
- Подключите сеанс VNC от ПК2 (Windows) к ПК1 (Ubuntu) через порт 5900.
Этого можно добиться, создав туннель SSH, осуществив удаленную пересылку с ПК1 и локальную пересылку с ПК2.
Это будет архитектура:
Таким образом, чтобы это работало, с Ubuntu PC, PC1, вам нужно подключиться к PS с помощью:
ssh <ps-user>@<ps-address> -R 5901:localhost:5900
На этом этапе, если вы вошли в ПК1, вы можете запустить netstat -latn | grep 5901
и вы должны увидеть, что он слушает. Это означает, что половина процесса готова.
Теперь клиентское соединение. С ПК2, если бы это была тоже коробка с Linux, вы могли бы использовать
ssh <ps-user>@<ps-address> -L 5902:localhost:5901
если это Windows, вы можете использовать PuTTY, установив раздел переадресации портов под Connection
/ SSH
/ Tunnels
, и добавить локальный порт с портом источника 5902
и локальным хостом назначения localhost:5901
. При нажатии Добавить вы увидите в списке переадресованных портов что-то вроде L5902 localhost:5901
Теперь у вас есть два туннеля, подключенных к общедоступному серверу. Если вы запускаете VNC Viewer с ПК2 и указываете на localhost:5902, вам следует подключиться к службе VNC, прослушивающей порт 5900 на ПК1.
Надеюсь, поможет.