Удалённый доступ Linux-to-Linux, или Просто об SSH и VNC.
Когда пришлось решать проблему удалённого доступа между правильными ОС,
встал вполне логичный вопрос о том, как это осуществить. В голову сразу
пришёл протокол SSH, о
котором уже как-то читал, но не решался попробовать в действии, т.к.
полагал что всё будет нудно и сложно, да и вообще мне это было не
нужно. На самом деле, в простейшем случае, это совсем не так. Итак,
если у вас и на обоих ПК установлен дистрибутив Ubuntu Linux, то
получить графический доступ к рабочему столу, но по протоколу VNC, можно вообще в пару кликов мыши.
Для
этого сначала на удалённом ПК зайдите в "Система -> Параметры ->
Удалённый рабочий стол" или в терминале выполните (сразу условимся: "$"
перед командой - достаточно прав пользователя, а "#" означает, что
нужны привилегии рута):
$ vino-preferences
После этого откроется окно настроек.
Итак,
для предоставления доступа нужно отметить пункт "Позволять другим
пользователям видеть ваш рабочий стол". На этом можно и остановиться,
но посмотрим, что предложили нам в дополнительных настройках. Здесь
можно обратить внимание на разделы "Безопасность" вкладки "Общие" и
"Уведомления" вкладки "Дополнительно". Можно вообще отключить
какое-либо уведомление о подключении, убрав отметки пунктов в разделе
"Безопасность", а в "Уведомления" отметив "Никогда не показывать
значок". В принципе, настройки не нуждаются в комментариях, всё
элементарно. После произведения настроек жмём "Закрыть". Так же
необходимо убедиться, что открыты порты диапазона 5000-5006. Всё, ПК
готов к соединению.
Теперь, когда настройки удалённого ПК завершены, перейдём к осуществлению подключения. Для этого уже на рабочем ПК наберём:
$ vncviewer 111.111.111.111:0
Где
"111.111.111.111" - IP удалённого ПК, а "0" (нуль) после двоеточия -
номер дисплея удалённого ПК. Всё. Если в настройках не были указаны
подтверждение или ввод пароля, то сразу откроется окно, в котором и
будет отображён рабочий стол удалённого ПК. Можно пользоваться не
только управлением мышью, но и клавиатурой. Хочу отметить, что если
запустить вот так:
$ vncviewer FullScreen=1 111.111.111.111:0
то
рабочий стол будет отображён в полноэкранном режиме, а не в окне. Если
вы захотите выйти из полноэкранного режима, то нажмите F8 и уберите
соответствующую галочку. Так же здесь имеются дополнительные настройки
соединения в меню "Settings", которые так же доступны в виде свойств
при запуске vncviewer (в терминале: $ vncviewer --help).
Данный
метод есть смысл использовать только в случае достаточно быстрого
Интернет-соединения и на десктоп-ориентированных ПК с X Window System.
А так как сам по себе этот протокол всё-таки не отличается особой
безопасностью, то работать с ПК, содержащим важные данные, не
рекомендуется. В случае работы с важными данными гораздо лучше
запускать VNC-сессию через SSH-тоннель. Но это не входит в данный
обзор, поэтому пока ограничимся шифрованным доступом к командной
оболочки удалённого ПК.
С
помощью SSH всё не так красочно, но зато быстро и надёжно. Используя
SSH можно без проблем организовать надёжный и шифрованный канал между
двумя машинами. Приступим.
Для начала необходимо убедится, что на удалённом ПК работает SSH-сервер:
$ ps -ax|grep sshd
Должна появится строка вроде "5437 ? Ss 0:00 /usr/sbin/sshd". Если это не так, то запускаем
# /etc/init.d/ssh start
или устанавливаем его (демон запустится автоматически):
# apt-get install openssh-server
Убедитесь, что порт 22 для TCP-соединений не закрыт. С удалённой машиной всё :)
Теперь переходим к поднятию соединения. Убедитесь, что у вас установлен SSH-клиент:
$ aptitude search openssh-client
В начале строки должна стоять буква "i". Если это не так, то:
# apt-get install openssh-client
Осуществлять
аутентификацию будем по двум ключам - приватному (шифрованный) и
публичному. Это просто и удобно, лучше чем по паролю на удалённом ПК.
Для этого нужно сначала создать эти два ключа:
$ ssh-keygen
Будет
задана как минимум пара вопросов. Место расположения ключа оставьте по
умолчанию, т.е. на первый вопрос просто нажмите Ввод, а вот потом
введите ключевую фразу и в следующем шаге подтвердите ввод. Фраза
должна быть более 4-х байт, но лучше с запасом. 6-8 символов вполне
подойдут. После этого скопируем публичный ключ на тот самый удалённый
ПК через Сеть (трафик шифруется):
$ ssh-copy-id user@ip
Где
"user" - название учётной записи пользователя удалённого ПК, от имени
которого вы будете работать, а "ip" - IP того ПК. После установления
соединения ответьте "yes" на подтверждение передачи публичного ключа
через интернет, а потом введите пароль этого аккуанта. Всё, ключ
скопирован на удалённый ПК. С этого момента вы сможете заходить на него
без ввода пароля пользователя, а лишь вводя свою ключевую фразу для
расшифровки своего же (приватного) ключа. Делается это очень просто:
$ ssh user@ip
Таким
образом, если вы будет работать под чьим-то аккуантом, то его владелец
сможет сменить пароль после передачи ключа, а вы этого даже не заметите.
Итак,
после подключения у вас в терминале/консоли будет выведено
информационное сообщение, а строка приглашения изменится на
user@server, где "server" - уже имя удалённой машины.



