rdesktop в linux и терминальный сервер windows

Делали один подряд и столкнулись с проблемами, по которым в интернетах не найти космплексного решения.
В результате в голове уже с неделю болтается немного инфы, которую я здесь представлю в виде 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 0x409 на map 0x419

Автоматическое монтирование флешек
В 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.

Запись опубликована в рубрике Без рубрики с метками , , , . Добавьте в закладки постоянную ссылку.

12 комментариев на «rdesktop в linux и терминальный сервер windows»

  1. sancho[NhT] говорит:

    Спасибо за статью.
    Решение обалденное. Надо будет попробовать реализовать :)

  2. КомпТех говорит:

    Патч от альтлинукс надо допиливать напильником :) На последних версихя xorg он не работает.
    Мы в принципе разобрались как raw режим работает, но под каждый комп надо руками доделывать, а так в целом работет.
    http://www.brntech.ru/index.php?mact=Blogs,cntnt01,showentry,0&cntnt01entryid=9&cntnt01returnid=23

  3. KiwiBird говорит:

    В репозиториях Убунты пакет rdesktop лежит уже с применённым патчем и даже работает. Но на ноутбуках(и не только) остаётся проблема со скан-кодами стрелок и прочего.
    Так что ваш способ очень интересен. Спасибо.

  4. DoMiN8ToR говорит:

    Все бы здОрово, только у такой схемы есть 1 ‘NO’:
    терминальный сервер ‘в оффшоре’ должен иметь фантастическую систему ввода-вывода (HDD I\O), чтобы держать на себе пять(десят) юзверей. Добавляем латентности на канале (200ms юзвери не почувствуют, а вот 800 — обязательно), и… вложения не окупятся. Есть вариант красивее и эффективнее:
    закрытая серверная с 1-2 серверами на 4-8 SSD дисках, типа, Intel X25-E в Raid0 на Adaptec 5805 с ‘выжигателями дисков’ от неро. Все ‘заминировано’ + рег.бэкапы.

    Проверено, работает.

    P.S. Юзвери и начальство писают кипятком :)

  5. Максим говорит:

    Хорошая статья.. вот только что-то ни слова о автоматическом запуске программы на терминальном сервере. Если сервер на windows server 2003 а клиент на Ubuntu 10

    • KiwiBird говорит:

      О какой программе речь?
      Кроме того, необходимость этого автоматичского запуска сомнительна, когда пользователь поноценно работает в терминале: с 1С, почтой, экселем и прочим.

    • West говорит:

      to Максим это лучше настраивать непосредственно на сервера на данного пользователя

  6. Denis говорит:

    Полезная статья, особенно для начинающих.

    У меня остался вопрос с доставкой вендовых приложений. Скажем сейчас у меня развернута технология RemoteApplication (аля цитрикс) на Win 2008 R2, есть ли способ доставить это же самое приложение на Ubuntu?

  7. Denis говорит:

    еще моментик. Возможно ли сделать так, чтобы можно было терминальные окна в полноразмерном режиме сворачивать на панель задач — как в венде?

  8. Denis говорит:

    И еще два моментика, сами окна по сравнению с mstsc работают как-то заторможено, и черный курсор мыши просто выводит из себя.

  9. FR05T говорит:

    Здравствуйте, такая проблема есть терминальный сервер на базе CentOS 6 и есть терминальные станции, проблема в следующим у пользователей не монтируются автоматически Флешки, а когда заходишь под рутом все нормально Флешки видит, а под пользователем нет. Подскажите что за команда активирует данную настройку или пользователей надо в группу добавить ??

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *