Мдя, не зря когда-то давно в своё время Microsoft купила у Polycom-а NetMeeting и встроила во все свои продукты RDP. В мире OpenSource с удалённым доступом с графическим интерфейсом как-то всё прям очень-очень грустно. Не, у X11 конечно есть нативный Forwarding куда угодно, но оно такое, несжатый растр по сети гонять. Есть всякие поделки вокруг VNC со всеми его приколами. Есть наследники NoMachine в виде X2Go. Есть xRDP, причем как ни странно это самый перспективный инструмент (привет Microsoft-у), хоть и глюкавый. Второй по фичастости и скорости работы после него - питонописный
Xpra. Тоже глюкавый шо ппц. Но вариантов, увы, не так-то и много. Всё остальное ещё хуже. Поэтому в энный раз пошел его ковырять. По результатам родилась эта памятка.
- Инсталлировать нужно только из дистрибутивов разработчика, а не из встроенных системных. Потому что новые версии выходят со скоростью [censored], при этом не всякий клиент подходит не ко всякому серверу. Автор, конечно, утверждает, что можно брать "любые поддерживаемые", но мы-то знаем...
- По факту на момент написания этого поста самая древняя версия из числа ещё юзабельных - пятая. Типа стабильная - шестая.
- В идеале версии клиента и сервера должны совпадать. Но этого не всегда можно добиться, особенно на каких-нибудь oldstable Debian. Поэтому иногда приходится искать клиента потухлее. Под форточки оные живут здесь. И да, зацените размер инсталлированного клиента под винду (в мегабайтах) и подЫвитесь.
- Клиент всё время хочет включить OpenGL Acceleration, которое есть не везде и не всегда. Поэтому если ругается, надо запускать с ключом "--opengl=no".
- Shadow-сессии работают только в том случае, когда второй подключающийся пытается залезть под тем же юзером / аккаунтом, что и первый. Неудобно, но херъ что сделаешь.
- Серверную часть имеет смысл запускать сразу с ключами "--pulseaudio=no --webcam=no --mdns=no --resize-display=1200x900". Первые три всё равно нормально не работают. А без явного указания resize клиента будет пидорасить со страшной силой.
- Как systemd-сервис у меня так и не получилось его пустить по-нормальному. Но можно как user-service (systemctl --user блаблабла).
- Когда серверная часть запускается в режиме прослушки TCP-сокета, надо явно настраивать шифрование канала. Потому что клиент не хочет авторизоваться по нешифрованному соединению, и в данном случае это не про TLS. Надо какие-то симметричные ключи куда-то там прописывать. Я так и не осилил, плюнул, сделал поверх SSH.
- Самое, блин, главное. Если между клиентом и сервером где-то сломан PMTU Discovery и толстые пакеты не пролезают (например, в транзите есть всякие IPSec / VPN), то клиент поверх SSH просто не подключится не выдав никакой информативной ошибки. Называется "иди и ищи". И надо колдовать со всякими TCPMSS или MTU чтобы починить.
- Если надо запустить рабочий стол гном "как есть" вместе со всеми менюшками и launcher-ом, то это директива "start-desktop --start-child=gnome-shell", а не "gnome-session", как почему-то написано во всех мануалах.
- Нарвался на капец странный глюк. По FQDN-имени клиент изо всех сил отказывался подключаться к серверу, а по IP-адресу - на здоровье, сколько угодно. Вот это меня вообще убило, но причин так и не выяснил.
Вот такая грузть-писялька. В следующий раз наверное таки всё же xrdp возьму. Что-то меня ентот xpra совсем расстраивает.