rdesktop в linux и терминальный сервер windows
Вторник, Июль 21, 2009 16:45Делали один подряд и столкнулись с проблемами, по которым в интернетах не найти космплексного решения.
В результате в голове уже с неделю болтается немного инфы, которую я здесь представлю в виде how-to для специалиста-администратора.
Задача: защитить документооборот, переписку и прочие данные предприятия от кривых рук пользователей и «маски-шоу», заодно избавиться от нелицензионного софта в офисе. На рабочих станциях остаётся Skype, интернет-сёрфинг и прочие неважные мульки.
Решение: перенос всей работы на терминальный сервер, стоящий где-нибудь в секретном дата-центре(возможно в оффшорах).
С установкой виндового терминального сервера и Active Directory на отдельную тачку, или в виртуалку,никаких проблем нет.
Переносим пользовательскую инфу: профили, документы, переписку, Application Data и прочее на установленный сервер.
На рабочие станции и ноутбуки заливаем Ubuntu 9.04. Сойдёт любой дистрибутив linux, но мы выбрали самый desktop-friendly. Если на ноутах, или компах предустановлена windows profissional, или business, её можно оставить и работать в терминале через её родной mstsc. У нас была пачка ноутов с Media Center и Home, которые мы не стали жалеть.
При установке Ubuntu требуется создать пользователя, которому автоматически разрешается sudo. Из под него затем выполняется вся настройка и создаётся пользователь, который будет автоматически логиниться в систему при загрузке. У пользователя на столе развешиваются ярлыки для Skype, FireFox(Internet), Pidgin(ICQ), OpenOffice(Word) и OpenOffice(Excel). По желанию можно сделать ярлык для соединения с терминальным сервером, но мы использовали для этого комбинацию клавиш. С понтом: так меньше палева.
Смену раскладки клавиатуры в терминальном сервере вешаем на Alt+Shift (пользователям так привычнее), а в linux — на Ctrl+Shift, или на два Shift’a, чтобы не пересекались. Отключаем в compiz графические эффекты, чтобы Win+R вызывало запуск программ в терминале, а не включало зум в linux.
Решение проблемы с Alt+Shift
Во многих современных линуксах нажатие Alt+Shift воспринимается как какой-то Meta-символ, что приводит к «залипанию» Alt в терминальной сессии. Даже если перевесить смену раскладки на другие кнопки, пользователи всё равно периодически будут нажимать Alt+Shift и огребать «глюки».
Чтобы этого не случалось, можно использовать ключ «-y»(raw) для rdesktop 1.6.0 и выше, но тогда будут проблемы с работоспособностью некоторых клавиш, особенно на ноутбуках.
Также, можно заморочиться поиском именно своей клавиатуры в настройках xorg, но в условиях зоопарка это нереально.
Можно пересобрать xmodmap, с тем чтобы сменить там в раскладке «Alt_L Meta_L» на простой «Alt_L», но не во всех дистрибутивах это также легко и прозрачно сделать как в ThinStation.
Наш с трудом нагуглённый вариант это следующая команда:
DISPLAY=’:0′ xmodmap -e «keysym Alt_L = Alt_L» которую вполне можно выполнять из под пользователя непосредственно перед запуском терминальной сессии.
Решение проблемы с неработающими клавишами
Здесь всё просто. Раскладка ru в rdesktop изобилует всякой хренью, которая на деле только мешает.
Делаем sudo cp /usr/share/rdesktop/keymaps/en-us /usr/share/rdesktop/keymaps/ru
Затем открываем /usr/share/rdesktop/keymaps/ru в любом редакторе и меняем там map 0×409 на map 0×419
Автоматическое монтирование флешек
В Ubuntu любая первая воткнутая в разъём флешка автоматически монтирается в /media/disk. Вторая — в /media/disk-2. У наших пользователей не предвидится больше одной флешки необходимой в терминале.
Используем ключ rdesktop -r disk:FLASH=/media/disk чтобы смонтировать флешку на сервер. Если флешка была подключена во время работы в терминале, терминальную сессию возможно придётся перезапустить.
Кстати, ключом rdesktop -r clipboard:CLIPBOARD можно синхронизировать содержание буфера обмена на клиенте и сервере.
Запускаем терминальную сессию таким микро-скриптом(желающие могут уместить это в одну строку):
cat terminal.sh
#!/bin/sh
DISPLAY=':0' xmodmap -e "keysym Alt_L = Alt_L"
rdesktop -Nzfr disk:FLASH=/media/disk -r clipboard:CLIPBOARD -u username -d domain -p password terminal.server.address
Если кому-то что-то хочется спросить, или нужен какой-либо скриншот, обращайтесь, я отвечу и дополню этот how-to.
sancho[NhT] пишет:
18th Август 2009 в 21:33
Спасибо за статью.
Решение обалденное. Надо будет попробовать реализовать :)
[Ответить]
КомпТех пишет:
21st Август 2009 в 06:38
Патч от альтлинукс надо допиливать напильником :) На последних версихя xorg он не работает.
Мы в принципе разобрались как raw режим работает, но под каждый комп надо руками доделывать, а так в целом работет.
http://www.brntech.ru/index.php?mact=Blogs,cntnt01,showentry,0&cntnt01entryid=9&cntnt01returnid=23
[Ответить]
KiwiBird пишет:
21st Август 2009 в 12:43
В репозиториях Убунты пакет rdesktop лежит уже с применённым патчем и даже работает. Но на ноутбуках(и не только) остаётся проблема со скан-кодами стрелок и прочего.
Так что ваш способ очень интересен. Спасибо.
[Ответить]
DoMiN8ToR пишет:
10th Ноябрь 2009 в 00:52
Все бы здОрово, только у такой схемы есть 1 ‘NO’:
терминальный сервер ‘в оффшоре’ должен иметь фантастическую систему ввода-вывода (HDD I\O), чтобы держать на себе пять(десят) юзверей. Добавляем латентности на канале (200ms юзвери не почувствуют, а вот 800 — обязательно), и… вложения не окупятся. Есть вариант красивее и эффективнее:
закрытая серверная с 1-2 серверами на 4-8 SSD дисках, типа, Intel X25-E в Raid0 на Adaptec 5805 с ‘выжигателями дисков’ от неро. Все ‘заминировано’ + рег.бэкапы.
Проверено, работает.
P.S. Юзвери и начальство писают кипятком :)
[Ответить]
Максим пишет:
26th Август 2010 в 16:05
Хорошая статья.. вот только что-то ни слова о автоматическом запуске программы на терминальном сервере. Если сервер на windows server 2003 а клиент на Ubuntu 10
[Ответить]
KiwiBird Reply:
Август 26th, 2010 at 19:34
О какой программе речь?
Кроме того, необходимость этого автоматичского запуска сомнительна, когда пользователь поноценно работает в терминале: с 1С, почтой, экселем и прочим.
[Ответить]
West Reply:
Декабрь 4th, 2010 at 23:33
to Максим это лучше настраивать непосредственно на сервера на данного пользователя
[Ответить]
Denis пишет:
4th Апрель 2011 в 16:35
Полезная статья, особенно для начинающих.
У меня остался вопрос с доставкой вендовых приложений. Скажем сейчас у меня развернута технология RemoteApplication (аля цитрикс) на Win 2008 R2, есть ли способ доставить это же самое приложение на Ubuntu?
[Ответить]
Denis пишет:
4th Апрель 2011 в 16:44
еще моментик. Возможно ли сделать так, чтобы можно было терминальные окна в полноразмерном режиме сворачивать на панель задач — как в венде?
[Ответить]
Игорь Reply:
Май 7th, 2011 at 11:17
Ctrl+Alt+Enter
[Ответить]
Denis пишет:
4th Апрель 2011 в 17:02
И еще два моментика, сами окна по сравнению с mstsc работают как-то заторможено, и черный курсор мыши просто выводит из себя.
[Ответить]