Я хочу відкрити сеанс віддаленого робочого столу від свого ноутбука до робочого столу через свій тунель (зворотний) 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 Як згадувалося, я поставив з цього приводу кілька питань. Деякі з них підвели мене до вирішення і лягли в основу мого сьогоднішнього питання. Інші мої попередні запитання на цю тему просто показують моє незнання та нездатність задати питання в потрібній формі. На даний момент це теперішнє запитання представляє мою найкращу здатність констатувати, яка моя проблема, і яке моє бажане рішення, але деякі з моїх інших питань все ще залишаються відкритими. Ось такий, який є актуальним.
desktop
знаходиться за маршрутизатором NAT і laptop
позаду маршрутизатора NAT.