У меня есть доступ к 3 машинам: A(Windows 8, на которой я являюсь администратором), B(старый дистрибутив Ubuntu, на котором я являюсь пользователем root), и C (сервер под управлением Ubuntu, на котором я НЕ являюсь пользователем root).

Мне нужен удаленный рабочий стол от A до C. Но так как C находится в сети университета, мне нужно каким-то образом найти способ пройти через B (который также находится в сети университета). А мой ноутбук дома.

Любые идеи о том, как я мог бы сделать это? Я погуглил и подумал, что какое-то "туннелирование" подойдет (что-то похожее на это), но я новичок во всем этом, так что несколько конкретных и подробных советов помогут.

Заранее спасибо.

1 ответ1

0

Лучший способ обойти ограничения брандмауэра - реализовать обратный туннель, который решит все ваши проблемы.

Брандмауэры созданы для блокировки соединений из дома на рабочее место, но не наоборот. Обратный туннель - это соединение с работы на дом, которое должно быть постоянным. Это соединение позволяет совершить своеобразную поездку из дома на работу в любое время.

Вы можете реализовать обратные туннели как с B, так и с C (на обоих компьютерах с Linux, без проблем), при условии, что на вашем компьютере с Windows работает сервер ssh. Я предлагаю вам посмотреть freeSSHd (как видно из названия, это бесплатно). После того, как вы настроите на своем компьютере с Windows обратный туннель Linux, вы найдете множество объяснений.

Еще одним преимуществом обратных туннелей является то, что вы не обязаны использовать подключение к удаленному рабочему столу (например, ssh, которое я проиллюстрирую ниже), но вы можете использовать все, что захотите. Например, вы можете использовать VNC вместо ssh для полной загрузки, а затем у вас будет полностью графическая сессия с вашим рабочим компьютером из дома.

Если вы хотите что-то быстрое и простое, установите autossh на своих компьютерах с Linux (это пакет, который проверяет, работает ли данное ssh-соединение, в вашем случае обратный туннель, и если это не так, автоматически его перезапускает), а затем создайте например, файл с именем auto, сделайте его исполняемым, поместите эту строку в /etc/rc.local

/home/yourname/path/to/auto

и поместите этот текст в авто

 #!/bin/bash

 /usr/lib/autossh/autossh -M 6521 -f -p 22 -2 -N -R 8100:localhost:22 yourname@your.home.IP.address -i /home/yourname/.ssh/yourHOMEcryptokey

Теперь из дома вы можете связаться с:

 ssh -Y yourname@localhost -p 8100 -i /home/yourname/.ssh/yourWORKcryptokey

Первая команда использует порт 6521 на вашем домашнем компьютере, чтобы проверить, работает ли обратный туннель. Он также инструктирует ваш домашний компьютер отправлять на порт 22 вашего рабочего компьютера все, что ваш домашний компьютер получает через порт 8100. Вторая команда пытается открыть сеанс ssh с самим собой на порту 8100, но из-за того, что я только что сказал, эта попытка связи автоматически отправляется на ваш рабочий компьютер через порт 22. Таким образом, вы притворяетесь, что подключаетесь к своему домашнему компьютеру, правда в том, что вы подключаетесь к своему рабочему компьютеру.

Перед настройкой всего этого, вы должны убедиться, что можете подключиться (только один раз) без autossh с вашего рабочего компьютера на ваш домашний компьютер.

Использование криптографии не является обязательным, но делает общение намного безопаснее. Есть миллиарды руководств о том, как это сделать в любой ОС Google.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .