Примечание: Это не так , повторяю , не вопрос о туннельном VNC над чем - то еще, например , SSH. Это совершенно другая вещь.
Настроить
У меня есть машина M1 в каком-то сетевом сегменте, которая доступна из машины M2 вне сегмента через VNC, но (для обсуждения) никакого другого протокола вообще нет. Никакие другие машины в этом сегменте не доступны за пределами сегмента. Кроме того, M1 и другие машины в его локальном сегменте имеют ограниченную исходящую связь; в частности, M1 не может подключиться по SSH к любому nachine за пределами своего собственного локального сегмента (и, возможно, даже там).
Теперь, если я запускаю клиент VNC на M2, направляю его на M2, регистрируюсь и запускаю оболочку, я могу в основном запускать все, что захочу, и получать доступ к машинам в локальном сегменте M1. Однако я ограничен графическим взаимодействием клиента VNC.
Цель
Я хотел бы иметь возможность туннелировать соединения каким-либо образом с моей машины M2 на любую машину в локальном сегменте M1, куда бы я мог подключиться с M1.
Вопрос
Как я могу это сделать? Или, скорее, инструменты, необходимые для этого, уже разработаны и находятся в свободном доступе?
идеи
VNC основан на пикселях. Я не знаком с протоколом, но предположим, что нет никаких интересных данных «побочного канала», похоже, нам нужен двоичный файл или скрипт на M, который откроет окно или просто любой прямоугольник на VNC 'display', использующий прямоугольник для вывода и движение клавиатуры / мыши, которое это окно получает в качестве ввода. Эти два канала можно использовать, например, для связи с сеансом оболочки (или сеансом nc
если хотите). Клавиши клавиш становятся входным потоком (возможно, ограничиваясь base64), а пиксели соответствуют выходному потоку (и у нас будет либо очень маленькое окно, которое изменяется очень быстро, либо, ну, в общем, большие окна, которые также должны изменяться довольно быстро ,
С другой стороны, «клиент» VNC не должен отображать этот мусор на экране и не должен вводить данные с клавиатуры или мыши, а просто использовать порты для ввода и вывода этих данных.
Как вы думаете?
[На машине установлен SSH-сервер, но он поддерживает только локальные соединения