Удалённый рабочий стол в Ubuntu

Опцией Удалённый рабочий стол, наверное хоть раз в жизни, но пользовался почти каждый “продвинутый пользователь”. К счастью реализация и настройка удалённого рабочего стола в Ubuntu дело не сложное. В данном случае вам надо точно знать, что существует два популярных метода получения доступа к рабочему столу другого пользователя. Первый, и пожалуй наиболее популярный это с помощью Remote Desktop Protocol — (протокол удалённого рабочего стола) — RDP это протокол прикладного уровня, разработанный компанией Microsoft, использующийся для обеспечения удалённой работы пользователя с сервером, на котором запущен сервис терминальных подключений. Ой я разогнался, читайте продолжение под катом.

RDP – Remote Desktop Protocol

Как уже было сказано, RDP – это протокол удалённого рабочего стола разработанный всеми нами любимой корпорацией Microsoft, для обеспечения доступа, контроля и управления ресурсами другого компьютера под управлением систем Windows.

RDP имеет ряд особенностей и преимуществ. Нельзя отрицать, что данный продукт, вышедший из цехов Microsoft оказался весьма успешным.

Особенности RDP:

  • Поддержка 32-битного цвета
  • 128-битовое шифрование
  • Переадресовывание звука и видео (Web-камера, микрофон)
  • Возможность обмена данными через буфер обмена
  • Позволяет использовать локальные ресурсы удаленного ПК (принтеры, сканеры, камеры)

По факту обеспечивает вам полноценный менеджмент удаленного ПК.

Как работает RDP?
RDP работает по стандартному принципу клиент-сервер.

  • Сервер. Им является удаленный компьютер, с которым вы устанавливаете соединение. Это может быть либо стационарный компьютер в офисе, либо портативный компьютер, с которым вы соединяетесь удаленно, когда его владелец находится в поездке.
  • Клиент. Это тот компьютер, с которого вы устанавливаете соединение с сервером. Например, переносной компьютер для работы во время путешествия, телефон, самартфон, нетбук и прочие “умные” устройства.

Практическое применение RDP в Linux?
Если вы раньше не сталкивались и не работали с RDP то у вас может возникнуть резонный вопрос, как это может использоваться в Linux? Объясню на личном примере, я хожу на работу с моим лэптопом под управлением Ubuntu Linux, это очень удобно, так как мне приходиться администрировать бесчисленное множество Linux серверов. Но так же, в нашей компании есть очень много серверов под управлением систем Windows Server и в мои обязанности, так же входит управление этими Windows серверами.

Что-бы успешно справляться с обеими задачами, я использую консольную утилиту rdesktop, которая по-умолчанию содержится в стандартной поставке любой версии Ubuntu Linux. Как работает данная утилита? Тут всё предельно просто, мне известно “имя” удаленного сервера к которому я должен подключиться, это может быть IP-адрес или доменное имя, типа host.myserver.com

Что-бы подсоединится к удалённому рабочему столу Windows, наберите в консоли:

rdesktop ip-address 
rdesktop ip-address 

где ip-address – это IP-адрес или домен. имя удаленной Windows машины
В прочем, вы можете модифицировать эту простую команду, используя опции и флаги для утилиты rdesktop.
Например вот так:

rdesktop -k en_us map.republic.com 
rdesktop -k en_us map.republic.com 

-k en_us – указать раскладку

rdesktop -g 60% -k en_us 172.16.10.4
rdesktop -g 60% -k en_us 172.16.10.4

указать размер окна в процентах, 100% – это НЕ FullSreen

rdesktop -u administrator -p cccccc -g 100% -k en_us 172.16.10.4
rdesktop -u administrator -p cccccc -g 100% -k en_us 172.16.10.4

Указать логи и пароль для удаленного компьютера, т.е. его не придется вводить.
Многие могут посчитать данный метод набора не безопасным.

rdesktop -f -k en_us 172.16.10.4 
rdesktop -f -k en_us 172.16.10.4 

Вот это уже FullSreen

Те, кто любит использовать графические клиенты, могут воспользоваться такими утилитами как: Gnome-RDP или Remmina все они поддерживают сессии, а так же несколько открытых рабочих столов, что очень удобно.

Установить Gnome-RDP очень просто:

sudo aptitude install gnome-rdp
sudo aptitude install gnome-rdp

Gnome-RDP поддерживает такие протоколы как: RDP, VNC, SSH. С помощью Gnome-RDP вы сможете настроить для RDP разрешение экрана, количество цветов, раскладку клавиатуры, вывод звука.

desk1

Установить Remmina не сложнее:

sudo add-apt-repository ppa:llyzs/ppa
sudo apt-get update
sudo aptitude install remmina
sudo add-apt-repository ppa:llyzs/ppa
sudo apt-get update
sudo aptitude install remmina

Структура Remmina немного продвинутее, а само программа имеет больше опций. Remmina поддерживает протоколы: SSH, RDP, VNC. SFTP. Обладает кучей опций и настроек. Присутствует поддержка плагинов.

desk2

Пример соединения с удалённым рабочим столом Windows 7 через консольную утилиту rdesktop:

twoDesk1

twoDesk2

VNC – Virtual Network Computing

VNC – система удалённого доступа к рабочему столу компьютера по протоколу RFB (Remote FrameBuffer). VNC является кроссплатформенным программным обеспечением, реализации клиентов VNC существует даже на JAVA, что позволяет использовать клиент на телефоне или смартфоне.

Структура VNC
VNC как и RDP работает по системе “клиент-сервер”, так же доступная опция “сервер-клиент”. Наиболее популярным VNC-сервером для Linux является Vino, он присутствует в сборке Ubuntu Linux по дефолту, так же как и клиент Vinagre. Обе данные утилиты консольные. К одному VNC-серверу, может подключаться сразу несколько клиентов. VNC это бесплатное программное обеспечение, с открытым исходным кодом, что без сомнения является преимуществом. Для обеспечения безопасности, устанавливать VNC соединение возможно через SSL, VPN или SSH-туннель. В некоторых случаях, когда сервер не снабжен GUI-интерфейсом, есть возможность установки программы Xming и вызов графического приложения на сторону клиента через SSH-туннель.

Настройка VNC-сервера и VNC-клиента в Ubuntu.
Существует множество модификаций VNC-серверов и клиентов, убедиться в этом вы можете, набрав в консоли команду:

aptitude search vnc
aptitude search vnc

Как уже было сказано, самым простым вариантом, будет использование сервера vino и клиента vinagre. Если по какой-то причине у вас нет в системе ни сервера, ни клиента, то поставьте их:

sudo aptitude install vino
sudo aptitude install vinagre
sudo aptitude install vino
sudo aptitude install vinagre

При наличии на стороне VNC-сервера GUI (в сущности Вино не работает без графической подсистемы, так как доступ осуществляется именно к графическому рабочему столу), например на вашей домашней машине, вы можете настроить необходимые опции пройдя по адресу: “Система” -> “Параметры” -> “Удалённый рабочий стол”
И выставить все необходимые галочки, напротив таких пунктов как пароль, доступ к рабочему столу, управление рабочим столом, как показано на рисунке ниже:

desk3

Еще один способ как включить Vino-сервер, встроенный в Ubuntu Linux по умолчанию. Нажать Alt+F2, в открывшемся окне ввести gconf-editor и далее проследовать по дереву desktop – gnome – remote_access и установить галку на против пункта: enabled. Но вам необходимы настройки безопасности, по этому первый метод предпочтительнее.

Ещё Vino можно запустить так:

sudo /usr/lib/vino/vino-server --sm-client-disable
sudo /usr/lib/vino/vino-server --sm-client-disable

За сим всё! Теперь вы можете подключиться от клиента к серверу, используя например утилиты Gnome-RDP или Remmina. Так же, вы можете осуществить подключение с помощью утилиты vinagre.

vinagre ip-address
vinagre ip-address

где ip-address – адрес удаленного сервера

Стоит отметить, что в работе Vino иногда наблюдаются некоторые трудности (хотя это пожалуй лучший VNC-сервер), по этому, если вам не нравится Vino, вы можете использовать альтернативные серверы, такие как: tightvncserver, vnc4server, x11vnc.
Установить их по прежнему очень просто:

sudo aptitude install vnc4server 
sudo aptitude install tightvncserver
sudo aptitude install x11vnc
sudo aptitude install vnc4server 
sudo aptitude install tightvncserver
sudo aptitude install x11vnc

Не обязательно устанавливать сразу все, вы можете установить любой из них на выбор.

Я хочу попробовать tightvncserver. Отличие tightvnc от других серверов в том, что он не расшаривает ваш рабочий стол, а создает совершенно новую сессию (т.е. удаленный пользователь не увидит ваших открытых окон и т.д.), что не всегда удобно, если вам необходимо помочь удаленно, зато удобно для совместной работы.

Давайте попробуем создать VNC-сервер с помощью tightvncserver:

tightvncserver -nolisten tcp :1
tightvncserver -nolisten tcp :1

Остановить его работу на первом экране можно так:

tightvncserver -kill :1
tightvncserver -kill :1

И далее присоединиться к серверу:

vinagre 192.168.1.100
vinagre 192.168.1.100

Вы можете, если хотите, произвести и более тонкую настройку.

Мнение

Лично я, от VNC не в восторге, работает медленно, не стабильно, не безопасно, к тому же еще и сложен в настройке, а если ещё на удаленном сервере стоит Compiz то у вас гарантированно возникнут проблемы в настройке и в работе. Конечно, можно настроить, можно обезопасить (SSH туннель), но стоит ли оно того? Тот же RDP много раз проще и лучше, а на его работу жаловаться не приходилось.

В некоторых случаях, я бы советовал использовать xrdp или TeamViewer, который прост в установке. имеет клиенты для Microsoft Windows, Mac OS X, iPhone OS и Linux, к тому же еще и бесплатен для частного использования. Впрочем, TeamViewer это тема уже следующей статьи.

Статья подготовлена по материалам:
http://ru.wikipedia.org/
www.intuit.ru