Линукс для терминального доступа

Терминальные решения на Linux — Linux в качестве терминального клиента и десктопной машины

Сегодня, в продолжении цикла статей об альтернативном бесплатном программном обеспечении, хотим осветить довольно популярный вопрос терминальных решений на базе Linux. Данное решение абсолютно ничем не уступает терминальным клиентам, которые идут в комплекте с операционными системами Microsoft Windows.

В качестве примера мы будем использовать операционную систему Xubuntu 12.04, терминальный клиент rdesktop и Microsoft Windows Server 2003.

Терминальный RDP клиент rdesktop для установки предоставляется в различных вариациях, в том числе и в исходных кодах. Скачать вы его можете из репозиторием вашей системы либо с сайта разработчика.

Статья ориентирована на новичков в среде Linux. В статье будет присутствовать излишняя разжеванность для беспроблемной инсталляции RDP клиента rdesktop обычному пользователю.

Установка клиента rdesktop на Ubuntu, Linux

Вопрос установки операционной системы мы рассматривать не будем, данной информации достаточно на просторах интернета и мы полагаем, что вы обладаете навыком инсталляции вашей версии Linux на компьютер.

Перейдем непосредственно к установке нашего клиента на десктопный компьютер. Мы будем производить установку RDP клиента непосредственно из стандартных репозиториев ubuntu. Данный метод позволит быстро и без лишних хлопот установить наш клиент.

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

Далее строится ветка зависимостей пакетов и происходит установка недостающих пакетов и самого клиента rdesktop. Примерно так:

Собственно на данном этапе инсталляцию RDP клиента rdesktop можно считать завершенной. Поздравлямба =)

Настройка терминального клиента rdesktop

В принципе, после установки терминальный клиент rdesktop полностью готов к работе, но встречаются проблемы с кодировкой клавиш и комбинаций клавиш клавиатуры в терминальном доступа. Данная проблема легко решается при помощи ручной корректировки кодов символов в файлах конфигурации терминального RDP клиента rdesktop.

Интересующие нас файлы находятся в директории:

Для конфигурации нам потребуются 2 файла ru и en-us. Для конфигурирования данных файлов достаточно открыть их в любом текстовом файле с правами суперпользователя:

И заменить все содержимое файлов на следующее:

По результатам данных манипуляций исчезнут проблемы с вводом символов на русской и английской раскладке в терминальном доступе.

Конфигурация и подключение терминального клиента rdesktop к серверу

И вот мы подошли к самому интересному и завершающему этапу нашей сегодняшней темы статьи — конфигурация и подключение терминального клиента RDP rdesktop к терминальному серверу Windows.

Для начала мы приведем список всевозможных конфигураций и ключей для терминального клиента rdesktop.

Небольшая ремарка к параметру полноэкранной инициализации терминального клиента — для возврата в оконный режим необходимо нажать сочетание клавиш Ctrl+Alt+Enter

Подытожим с возможными конфигурациями, ключами и параметрами RDP терминального клиента rdesktop и перейдем, непосредственно, к примерам запуска терминальной сессии.

Минимальным набором параметров при инициализации терминальной сессии средствами терминального клиента rdesktop следует считать:

Присутствует всего один параметр — ip_rdp_server. Параметр ip терминального сервера может иметь 2 вида: с явным указанием порта подключения к терминальному серверу(адрес:порт) и портом по умолчания(адрес).

Пример инициализации терминальной сессии по нестандартному порту терминального сервера:

Приведем пример базовой конфигурации запуска терминального клиента rdesktop:

Т.е. по факту инициализации RDP клиента rdesktop мы получаем терминальную сессию, терминальное окно которого развернута на весь экран, нормальной работой кодировок русского и английского языка и с базовым пользователем user1. Терминальная сессия имеет минимум параметров инициализации: ip терминального сервера, раскладка клавиатуры для терминальной сессии, параметр открытия терминального окна на весь экрана и пользователя для авторизации. Для переходов между режимами и перехода в оконный режим используйте сочетания клавиш Ctrl + Alt + Enter.

Пример инициализации терминальной сессии без авторизации(параметры авторизации передаются в момент инициализации и прописаны в команде инициализации сессии):

Мы думаем комментарии к данной инициализации излишни, т.к. добавился всего один параметр -p — пароль пользователя при инициализации.

Пример проброса принтера в терминальную сессию rdesktop:

Параметр проброса принтера в терминальную сессию может быть представлен в двух видах: с неявным указанием драйвера принтера( -r printer:Имя_принетра_в_локальной_системе) и явным указанием драйвера принтера( -r printer:Имя_принетра_в_локальной_системе = «Дравер_для_терминально_сервера»). В большинстве случаев терминальный сервер корректно определяем необходимый драйвер для принтера и не требует явного указания драйвера в терминальной сессии на сервере.

Пример проброса COM портов в терминальную сессию rdesktop:

Мы думаем данный пример не нуждается в излишних комментариях. В примере используется явное указание устройств подключенных по COM портам. Параметр проброса COM портов на сервер имеет вид — имя_инициализации_порта_на_сервере = путь_в_локальной_системе_к_COM_порту.

Пример проброса файловых директорий в терминальную сессию rdesktop:

Из данного примера мы видим параметр монтирования локальных файловых ресурсов средствами терминальной сессии. Параметр имеет следующую структуру — имя_устройства_при_инициализации_на_сервере = имя_директории_на_локальной_машине

Собственно на данном этапе мы и подытожим с примерами инициализации терминальных сессий средствами терминального клиента rdesktop и добавим к вышесказанному о возможности проброса таких устройств как:

  • Клавиатур.
  • Аудио устройств.
  • LPT
  • Scard — ключей цифровой подписи eToken и прочее.
Читайте также:  Linux mint как запустить bundle

Вот и подытожили мы нашу сегодняшнюю статьи, которая получилась довольно обширная и внятная для новичка в системе linux.

По итогам прочтения данной статьи у вас должно возникнуть устойчивое, четкое представление о возможностях терминального клиента rdesktop на ОС linux, теоретические и практические знания по процедуре установки и инициализации терминальных сессий средствами терминального клиента rdesktop.

Источник

Лучшие RDP клиенты для Linux

Протокол RDP или Remote Desktop Protocol — это основной протокол удалённого доступа в операционных системах семейства Windows. В современных версиях Windows уже по умолчанию предустановлено всё необходимое программное обеспечение для обеспечения доступа к вашему компьютеру удалённо, а также для удалённого подключения к другим компьютерам с Windows.

Для операционных систем на базе ядра Linux было разработано несколько свободных клиентов, реализующих поддержку протокола RDP. В этой статье мы собрали лучшие клиенты RDP для Linux, работающие как в графическом интерфейсе, так и в командной строке.

Лучшие RDP клиенты в Linux

1. Remmina

Для этой операционной системы существует не так много клиентов и это лучший клиент RDP для Linux. У программы есть удобный графический интерфейс, множество различных настроек, возможность сохранения ярлыков для быстрого подключения к удалённым узлам с нужными вам настройками. Но автоматически ярлыки не сохраняются, вам надо будет делать это вручную. Кроме протокола RDP поддерживается VNC и SSH. Программа разрабатывается в рамках проекта FreeRDP, с использованием библиотеки GTK. Есть порт на Qt. Разрабатывается достаточно активно и новые версии выходят раз в несколько месяцев. Для установки достаточно выполнить команду:

sudo apt install remmina

2. Gnome Connections

Это совсем новая утилита, разработка которой стартовала в начале 2020 года. Connections — очень простое приложение, сделанное специально для Gnome и предназначенное для управления удалёнными подключениями. Из протоколов поддерживаются RDP и VNC. В отличие от Remmina, настроек в утилите совсем нет, вы можете только указать адрес и порт компьютера, к которому надо подключится и включить или отключить масштабирование. И всё никаких настроек передачи звука, буфера обмена, захвата клавиш, разрешения экрана нет. Программа всё ещё находится в разработке, но её уже можно установить из Flathub:

flatpak install flathub org.gnome.Connections

А для запуска используйте команду:

flatpak run org.gnome.Connections

3. Vinagre

Это ещё одно приложение для Gnome, которое раньше позиционировалось как программа по умолчанию для управления удалёнными соединениями в Gnome. Настроек здесь уже немного больше, по сравнению с Connections, но всё ещё меньше, чем у Remmina. При подключении вы можете выбрать протокол, имя пользователя и разрешение экрана, а также надо ли масштабировать рабочий стол удалённой машины. Из протоколов поддерживается RDP, SSH, SPICE и VNC. Программа довольно простая и свою работу выполняет, но разрабатывается уже не очень активно. Установить в Ubuntu можно командой:

sudo apt install vinagre

4. Xfreerdp

С полностью графическими клиентами RDP для Linux мы закончили. Но есть ещё несколько использующих консольный интерфейс. Первая из них — xfreerdp. Настроек здесь ещё больше чем у Remmina, но задавать их все надо в командной строке. Поддерживается только протокол RDP. Программа достаточно активно разрабатывается и поддерживает все необходимые новшества протокола RDP. Для подключения к серверу используется опция /v. Например:

xfreerdp /v:ip_сервера:порт /u:имя_пользователя

Для установки программы в Ubuntu используйте команду:

sudo apt install freerdp2-x11

5. Rdesktop

Последняя в нашем списке консольная утилита rdesktop. Это самая первая реализация клиента RDP для Linux. В далёком 2009 году, проект FreeRDP был создан на основе форка Rdesktop. Сейчас проект почти не развивается, а с 2019 года ищет мэйнтейнера. И у программы есть ещё одна проблема. В новых версиях Windows компания Microsoft добавила новую авторизацию NLA (Network Level Authentication). Программа Rdesktop её не поддерживает, поэтому если вы захотите использовать её для подключения к Windows, эту технологию стоит отключить. Или же вы можете использовать любую другую программу из перечисленных выше. Чтобы подключится к удалённой машине надо просто передать её адрес программе:

Для установки rdesktop выполните:

sudo apt install rdesktop

Выводы

В этой статье мы разобрали лучшие программы для подключения по RDP из Linux, которые вы можете использовать для своей работы. Может некоторые из них не такие уже и лучшие, но других у нас нет. А каким клиентом пользуетесь вы? Напишите в комментариях!

Источник

Ubuntu + XRDP + x11RDP терминальный сервер, с поддержкой звука, для серфинга в интернете — пошаговое руководство

Особенно нетерпеливых отсылаю сразу в конец статьи где будет ссылка на готовый .deb-пакет для установки.

А для всех остальных…

Что это такое и для чего это нужно

В первую очередь данное решение можно использовать как очень бюджетный вариант реализации безопасного доступа к интернет сотрудникам небольшой фирмы.

История номер один. (основано на реальных событиях)

Предположим бухгалтеру, в конце отчетного периода, когда все «на ушах», на
эл.почту приходит страшное письмо от «Налоговой Полиции» в котором говорится о том, что её фирма попала под жуткую проверку и ей следует немедленно ознакомиться с официальным документом который находится в прикреплённом к письму файле.
В панике бухгалтер пытается открыть прикреплённый файл и… все компьютеры фирмы подключенные в данный момент к внутренней локальной сети получают порцию вируса щифровальщика который парализует работу фирмы не не один день.

Читайте также:  Linux create user and user group

В случае с реализацией доступа через терминал на всех! компьютерах блокируется прямой доступ в интернет. Если работнику понадобилось в сеть для серфинга (почта, скайп, мессенджер) то он просто щелкает по иконке на рабочем столе и попадает на альтернативный рабочий стол где он может делать всё что угодно. В случае заражения при просмотре почты или любым другим способом вирус попадает на одинокую локальную машину (терминальный сеанс) которая не имеет доступа к сети предприятия и другим компьютерам. Так же в данном сеансе не хранятся важные документы и бухгалтерские базы данных. Поэтому ущерба, даже при полном удалении информации внутри сеанса, не будет абсолютно ни какого. Так же терминальную сессию можно просто свернуть в трей и открывать по мере необходимости, если пикнуло сообщение от мессенджера или поступил скайп звонок.

История номер два. (основано на реальных событиях)

Предположим один из сотрудников принес на флешке взломанную лицензионную программу которую поставил к себе на компьютер, в данном случае не рассматриваем доменные структуры AD, речь идет о небольших фирмах где не содержат штат сетевиков. После установки данной программы она спокойно может пожаловаться разработчикам через интернет что на компьютере по такому то IP кто то поставил взломанную версию и спокойно пользуется.
Дальше дело техники. Причем разборки могут быть очень серьёзные.
При реализации варианта терминал сервера данный вариант так же не проходит так как у локального компьютера просто нет доступа к сети и любая программа шпион не сможет вынести сор из избы.

Предисловие

Данное руководство, в первую очередь, ориентировано на начинающих системных администраторов желающих разобраться в сути вопроса. Так что для продвинутых в тексте может оказаться много лишнего. В руководстве постараюсь максимально подробно описать процесс настройки linux терминального сервера использующегося для безопасного интернет серфинга и описать решение известных проблем.

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

Сборка и тестирование производилось на виртуальной машине от virtualbox. При использовании чистого железа так же могут возникнуть проблемы с настройками драйверов. Из программного обеспечения были использованы Ubuntu 16.04 LTS server / x11RDP 7.6 / xRPD 0.9.2. На других версиях данное решение не тестировалось и не проверялось.

XRDP является специальным прокси-сервером который прослушивает RDP port 3389 на предмет внешних запросов. Принимает на него подключения и далее, в зависимости от настроек, переадресовывает их на внутренние порты OS.

Для установки скомпилируем необходимые пакеты:

По умолчанию в репозиториях UBUNTU 16.04 находится пакет xRDP v0.6.0 в котором я не смог найти решения для рализации передачи звука. Поэтому собирать новую версию xRDP будем из исходников.

На многих сайтах советуют клонировать свежую версию при помощи git:

Но, в данном случае, возникает риск того что, на момент тестирования, вы можете столкнуться с совершенно новой версией имеющей значительные отличия от v0.9.2 и что то может пойти не так. Поэтому скачиваем и распаковываем фиксированный пакет XRDP v0.9.2 с сайта разработчиков.

Перейдем в каталог с XRPD и начнем компиляцию:

На данном этапе необходимо указать компилятору что в готовую сборку необходимо добавить модуль поддержки звука. Более подробно об этом можно прочесть в файле который теперь находится на вашем диске в каталоге с исходниками XRDP.

Установим библиотеки необходимые для переадресации звука.

Добавляем ключ активирующий звук —enable-load_pulse_modules при конфигурации пакета, собираем и устанавливаем.

Теперь скопируем ключ защиты. В данном файле содержится пара ключей RSA, используемая для аутентификации удаленного клиента. Открытый ключ является самозаверяющим. Если этого не сделать то при подключении получим ошибку протокола RDP.

Добавляем XRDP в автозагрузку. Для автозагрузки будем использовать systemd:

Проверим прошла ли установка:

$ xrdp: A Remote Desktop Protocol server.
Copyright © Jay Sorg 2004-2014
See www.xrdp.org for more information.
Version 0.9.2

Если все сделано верно то теперь можно попробовать подключиться к серверу при помощи любого RDP клиента с другого компьютера. Или установить на этой же тестовой машине клиент freerdp:

И подключится локально внутри системы.

Дальше стартовой заставки дело не пойдет потому что у нас пока не установлена серверная часть ПО которой прокси сервер XRDP был бы должен передать управление.

x11RDP

В качестве серверной части могут быть использованы серверные модули поддерживающие разные протоколы передачи данных. В данном варианте будем использовать x11RDP v7.6.

Небольшое отступление

Все дело в том, что установленный нами ранее прокси XRDP 0.9.2 не может, без доработок, перебрасывать подключения к предыдущей версии сервера x11RDP v7.1 на котором, в свою очередь, отсутствует известная проблема с переключением раскладок клавиатуры ru/en как при создании нового сеанса так и при переподключении к старой сессии.

А при использовании старой версии прокси XRDP 0.6.0 с которой работает сервер x11RDP v7.1 мы не сможем осуществить переброс звука так как XRDP 0.6.0 не поддерживает ключ —enable-load_pulse_modules.

Для установки x11RDP v 7.6 вернемся в каталог:

Создадим каталог для установки пакета и произведем сборку.

Сборка происходит достаточно долго 15-30 мин. Команда time позволит нам увидеть, по окончании процесса процесса, сколько было затрачено времени.

Теперь у нас есть и RDP прокси и RDP сервер которому прокси передаст управление. Но нет графического приложения которое RDP сервер сможет вывести на экран.

Читайте также:  Windows 10 как изменить контекстное меню создать

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

И попробуем подключиться к серверу со стороны, или локально если ранее установили freerdp.

Теперь из меню необходимо выбрать x11RDP чтобы указать прокси какому именно серверу должно быть передано управление и ввести логин и пароль к ubuntu серверу.

Если все верно то на экране мы увидим графический интерфейс терминала xterm.

Настройка языковой консоли и режима переключения языков

Почти все основные настройки клавиатуры в ubuntu осуществляются при прмощи пакета setxkbmap.

Для начала закроем терминальную сессию и вернемся в консоль нашего ubuntu сервера
посмотрим что творится с клавиатурой.

Теперь подключимся к серверу терминалов и в терминале xterm выполним ту же команду:

$ Trying to build keymap using the following components:
keycodes: xfree86+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(pc105)
geometry: pc(pc105)
xkb_keymap <
xkb_keycodes < include «xfree86+aliases(qwerty)» >;
xkb_types < include «complete» >;
xkb_compat < include «complete» >;
xkb_symbols < include «pc+us+inet(pc105)» >;
xkb_geometry < include «pc(pc105)» >;
>;

Есть русская консоль и определены клавиши переключения языка alt_shift. На сервере терминалов противоположность:

Есть только английский язык и клавиши переключения языка не определены.

Есть еще одна странность. Локально, на сервере ubuntu, модель клавиатуры определилась как pc104:

А на сервере терминалов как pc105:

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

Вернемся к ubuntu серверу и посмотрим что установлено в конфигурационных файлах системы
по умолчанию

$ # KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL=«pc105»
XKBLAYOUT=«us,ru»
XKBVARIANT=»,»
XKBOPTIONS=«grp:alt_shift_toggle,grp_led:scroll»
BACKSPACE=«guess»

Установим hwinfo (сборщик информации об аппаратной части системы) и посмотрим информацию о железе:

В итоге аппаратно модель клавиатуры, в нашем случае определяется как pc104, в файлах конфигурации системы прописано обращение к устройству pc105. На локальном сервере определяется pc104, на сервере терминалов pc105. Из за данного несоответствия, в частности, возникает несколько глюков. Многие пишут что не могут справиться с настройкой локали на терминальном сервере. У некоторых пропадает русификация после переподключении к отвалившейся сессии и те пе.

Откроем в любом текстовом редакторе (я использую в примере редактор nano) файл конфигурации системы и исправим тип клавиатуры по умолчанию в соответствии с данными полученными от hwinfo:

Файл клавиатурных настроек программы XRDP 0.9.2 находится в файле
/etc/xrdp/xrdp_keyboard.ini. Эти данные прокси передает xRDP серверу как данные клиента который производит подключение. Откроем его и добавим в конец данного файла блок поддержки русской локали.

Предварительно исправив модель клавиатуры на верную model=pc104 (в оригнальной версии установлена pc105):

Добавляем в конец файла:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_subtype=1
model=pc104
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

Подключаемся к терминальному серверу. Проверяем клавиатурные настройки:

$ Trying to build keymap using the following components:
keycodes: xfree86+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+ru:2+group(alt_shift_toggle)
geometry: pc(pc104)
xkb_keymap <
xkb_keycodes < include «xfree86+aliases(qwerty)» >;
xkb_types < include «complete» >;
xkb_compat < include «complete» >;
xkb_symbols < include «pc+us+ru:2+group(alt_shift_toggle)» >;
xkb_geometry < include «pc(pc104)» >;

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

и появился русский язык с переключением по alt_shift. Закрываем сеанс оставляя его работать в фоне и переподключаемся к нему же снова чтобы проверить что не возникает известной проблемы при которой локаль пропадает при переподключении к уже открытому ранее сеансу.

В ubuntu старше 10.10, по умолчанию, за вывод звука отвечает сервер pulseaudio. В десктопных дистрибутивах он уже установлен. В серверных нет. Поэтому установим его.

Посмотрим и запишем номер версии пакета который по умолчанию установился в нашу систему:

Для начала скачаем исходники pulseaudio. Сделать это можно двумя способами.

1. Скачать общую версию с сайта разработчиков (freedesktop.org/software/pulseaudio/releases/) скачивать надо именно ту версию которую мы определили ранее. В нашем случае pulseaudio 8.0

2. Более правильно — подключить deb-src репозитории системы и получить исходники которые использовали авторы данного ubuntu дистрибутива.

По умолчаню ссылки на исходники в ubuntu отключены. Для подключения отредактируем файл списка репозиториев:

Необходимо удалить значки # перед всеми списками deb-src репозиториев.

$ E: Вы должны заполнить sources.list, поместив туда URI источников пакетов

Переходим в установочный каталог XRDP:

Исправляем make файл.

/pulseaudio* в данном случае не проходят. Необходимо точно прописать адрес каталога.

Замените admin на имя пользователя в Вашей системе. Сохраняем исправленный файл и делаем:

Если все выполнено верно в каталоге будут скомпилированы 2 новых библиотеки
module-xrdp-sink.so и module-xrdp-source.so.

Осталось только скопировать их в рабочий каталог с библиотеками сервера pulseaudio:

После перезапуска звук будет активирован.

Осталось установить любую удобную графическую оболочку. Для терминального сервера желательно что то не ресурсоемкое.

XFCE
Минимальный набор элементов:

Полный набор элементов:

LXDE
Минимальный набор элементов:

Полный набор элементов:

В зависимости от версии установленной графической оболочки, для её запуска возможно понадобится настроить файл .xsession

Готовый пакет для установки

XRDP v0.9.2 + скомпилированные библиотеки pulseaudio 8.0 + исправленный keyboard.ini файл для поддержки русификации. Те же кто не хочет сам собирать бакенд x11RDP v7.6 по этой же ссылке могут скачать готовый deb пакет бакенда xorg v.0.2.0. Порядок установки для совсем ленивых

Повторюсь что пакеты собирались практически на коленках и работа протестирована только
на ubuntu 16.04 server. Работоспособность данных .deb-пакетов на других системах не гарантирована.

Источник

Оцените статью