Czy istnieją narzędzia do tunelowania połączeń przez połączenie VNC (lub RFB)?

1

Uwaga: to nie jest, powtarzam nie pytanie o tunelowania VNC nad czymś innym, np SSH. To zupełnie inna sprawa .

Ustawiać

Mam maszynę M1 w pewnym segmencie sieci, która jest dostępna z komputera M2 poza segmentem za pośrednictwem VNC, ale (dla celów dyskusji) nie ma żadnego innego protokołu. Żadne inne maszyny w tym segmencie nie są dostępne spoza segmentu. Ponadto M1 i inne maszyny w jego lokalnym segmencie mają ograniczoną łączność wychodzącą; konkretnie, M1 nie może połączyć się przez SSH z żadnym nachine poza swoim lokalnym segmentem (a może nawet tam nie ma).

Teraz, jeśli uruchamiam klienta VNC na M2, kieruję go do M2, loguję się i uruchamiam powłokę, mogę w zasadzie uruchamiać cokolwiek chcę i uzyskiwać dostęp do maszyn w lokalnym segmencie M1. Jednak jestem ograniczony graficzną interakcją klienta VNC.

Cel

Chciałbym móc jakoś tunelować połączenia z mojej maszyny M2 do dowolnej maszyny w lokalnym segmencie M1, do dowolnego miejsca, w którym będę mógł połączyć się z M1.

Pytanie

Jak mogę to zrobić? A raczej, czy niezbędne do tego narzędzia zostały już opracowane i są dostępne bezpłatnie?

Pomysły

VNC jest oparty na pikselach . Nie znam protokołu, ale przypuśćmy, że nie ma interesujących danych z „kanału bocznego”, wydaje się, że potrzebowalibyśmy pliku binarnego lub skryptu na M, który otworzyłby okno lub dowolny prostokąt na VNC „display”, używając prostokąta dla wyjścia i ruchu klawiatury / myszy, który to okno otrzymuje jako dane wejściowe. Tych dwóch potoków można używać do komunikowania się, powiedzmy, z sesją powłoki (lub ncsesją, jeśli chcesz). Naciskanie klawiszy staje się strumieniem wejściowym (być może ograniczającym się do base64), a piksele odpowiadają strumieniowi wyjściowemu (i będziemy mieli albo naprawdę małe okno, które zmienia się bardzo szybko, albo, cóż, większe okna, które również muszą zmieniać się dość szybko .

Z drugiej strony „klient” VNC nie może wyświetlać żadnego z tych śmieci na ekranie ani pobierać danych z klawiatury lub myszy, a raczej używać portów do wprowadzania i wyprowadzania tych danych.

Co myślisz?

[Urządzenie ma serwer SSH, ale obsługuje tylko połączenia localhost

einpoklum
źródło
1
Naprawdę nie widzę sensu tego robić. Z pewnością możesz grać z protokołem i opracować jakieś rozszerzenie, aby przekształcić piksele w reprezentację danych do przesyłania plików. VNC nie jest domyślnie bezpieczny, więc po co to robić. Istnieje cała masa innych rozwiązań do przesyłania danych. Jeśli nie możesz uzyskać dostępu do serwera SSH, może możesz rozpocząć sesję SSH z tego komputera?
user7429642,
Słowo „może” miało na celu poinformować cię, że nie wiem, czy to możliwe, czy nie.
user7429642,
Przepraszam za mój wcześniejszy komentarz. Zobacz Edycja.
einpoklum