Віддалений робочий стіл через зворотний тунель SSH замінити TeamViewer


14

Я хочу відкрити сеанс віддаленого робочого столу від свого ноутбука до робочого столу через свій тунель (зворотний) SSH. Це повинно бути простим (або принаймні виконаним), правда? До цих пір я використовував програму Team Viewer для входу на віддалений робочий стіл. Я б хотів досягти подібних результатів без Team Viewer.

Ось як виглядає мій тунель SSH:

laptop--->nat--->middleman<--nat<--desktop

На всіх машинах працює Linux (в основному Kubuntu 12.04 або OpenSuse 12.3). Я не можу змінити жодні порти або змінити конфігурацію на маршрутизаторах nat.

Я опишу свій тунель SSH, оскільки розуміння, яке, як видається, є необхідним у вирішенні проблеми VNC / віддаленого робочого столу, що є серцем мого питання. Щодо цієї ноги:

middleman<--nat<--desktop

... ось як це встановлено:

autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com

Щодо цієї ноги:

laptop--->nat--->middleman

Я можу підключитися до посередника так:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

Однак те, що мені насправді потрібно зробити, це підключитись безпосередньо до робочого столу, а не до посередника. Для цього я використовую netcat ("nc") на посередника. На підставі цього виявляється, що nc потрібен. Тому я редагую свій конфігураційний файл SSH на ноутбуці, щоб використовувати ProxyCommand та nc:

me@laptop:~/.ssh$ nano config

Вміст:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Де middleman_fqdnсхоже на "middleman.com"

Тоді я просто підключаюся до "робочого столу" одним кроком:

me@laptop:~$ ssh family_desktops -p 1234

(У мене це було на основі допомоги тут і тут та інших пов'язаних з цим питань. Я задав безліч питань на цю тему, тому що боровся з нею вже багато тижнів.)

За допомогою цього SSH-з'єднання я дістаю повністю функціонуючу оболонку на моєму комп’ютері, що має маркування desktop. Ідеально.

Тепер мені просто потрібно VNC-подібне (або TeamViewer-подібне) рішення віддаленого робочого столу над цим тунелем SSH. Як?

Ось що я спробував поки що:

посередник <- nat <- робочий стіл

autossh -M 5235 -N -f -R 1235:localhost:5901 user@middleman.com

з цим зв'язком встановлено:

x11vnc -autoport 5901 

Я стежу за тим, щоб переконатися, що він підключається до порту 5901, який він робить.

ноутбук ---> nat ---> посередник <- nat <- робочий стіл

ноутбук ~ / .ssh / config:

Host family_desktops
  ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

Налаштування тунелю:

me@laptop:~$ sudo ssh family_desktops

Клієнт VNC:

connect to localhost:5901

Це дає помилку "сервер не знайдено"

Я спробував декілька варіацій на ProxyCommand, жодна з них не була успішною. Очевидно, я здогадуюсь про те, які параметри повинні бути в ProxyCommand, а які повинні бути в командному рядку ssh. Я можу побачити деякі можливі проблеми з моїм налаштуванням, але я не зміг зрозуміти, що змусить це працювати.

PS Як згадувалося, я поставив з цього приводу кілька питань. Деякі з них підвели мене до вирішення і лягли в основу мого сьогоднішнього питання. Інші мої попередні запитання на цю тему просто показують моє незнання та нездатність задати питання в потрібній формі. На даний момент це теперішнє запитання представляє мою найкращу здатність констатувати, яка моя проблема, і яке моє бажане рішення, але деякі з моїх інших питань все ще залишаються відкритими. Ось такий, який є актуальним.


1
Бічна примітка: Будь ласка, не використовуйте посилання "тут" або "це" . Укажіть змістовну назву своїх посилань, наприклад, назву питання чи веб-сторінку, на яку ви посилаєтесь.
Марко

Ви раніше не задавали це питання? unix.stackexchange.com/questions/82255/…
slm

@slm - дивіться деякі з посилань у моєму запитанні. Вони є моїми пов'язаними питаннями. Я все ще намагаюся досягти рішення, і кожне питання, здається, наближає мене ...
MountainX

Це здається неймовірно заплутаним. Я використовую віддалений робочий стіл своєї машини Windows 8 за допомогою SSH'ing для машини також у тій же мережі, у якій відкритий порт у брандмауері до нього.
Тім

@Tim це зворотний тунель SSH, і він потрібен, тому що desktopзнаходиться за маршрутизатором NAT і laptopпозаду маршрутизатора NAT.
MountainX

Відповіді:


3

Чи можете ви спробувати зробити другий крок, не роблячи nc? Тобто - зробіть VNC лише з -L і -R. Я вважаю, що проблема в тому, що ваш сеанс netcat підключається до вже відкритого. Тому при виконанні матеріалів VNC не використовуйте netcat.


1

Замість ProxyCommand слід встановити "шлюз так" для свого посередника sshd.conf.

  1. Потім перейдіть на віддалений тунель від робочого столу до посередника і відкрийте порт tcp x в посереднику і vnc на локальному рівні.
  2. Потім перейдіть локальний тунель від ноутбука до порту vnc посередника, який відкриває вам localhost, і тунелюйте його до x.
  3. Потім підключіться до localhost: vnc, тому він перейде через локальний тунель до посередника та віддаленого тунелю до ноутбуків vnc.

Після того, як ви працюєте, дізнайтеся більше про безпечніші налаштування шлюзів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.