Как настроить сеанс xrdp, который повторно использует существующий сеанс?
Я пытался настроить сервер терминалов RDP на точное использование xrdp, и у меня были значительные проблемы с получением рабочей конфигурации. Когда пользователь входит в систему, он должен подключиться к существующему сеансу этих пользователей, если он существует, в противном случае начинается новый сеанс, и любой запущенный сеанс должен запускать LXDE. Какие изменения в конфигурации по умолчанию мне нужно сделать, чтобы это работало?
12 ответов
У меня была такая же проблема, и я просто нашел простое решение. Первоначально я только что установил xrdp, используя стандартную процедуру:
apt-get install xrdp
После этого все о вашем файле xrdp.ini, который находится здесь:
/etc/xrdp/xrdp.ini
Чтобы открыть и отредактировать файл конфигурации xrdp, используйте:
sudo nano /etc/xrdp/xrdp.ini
по умолчанию первый скрипт обработки сеанса xrdp выглядит так:
[xrdp1]
name=sesman-vnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
Важная линия port=-1
, это заставляет xrdp всегда искать свободный порт для подключения. Если вы установите фиксированный порт здесь, xrdp всегда будет возвращаться и подключаться к одному и тому же сеансу. Я изменил свой, так что это выглядит так:
[xrdp1]
name=customsessionname
lib=libvnc.so
username=myusername
password=ask
ip=127.0.0.1
port=5912
Вот и все, я думаю, вы могли бы просто изменить port=-1
в port=5912
, Мой xrdp всегда повторно подключается к существующему сеансу, всегда используя тот же порт.
Я хотел бы улучшить существующий ответ. Ответом с наибольшим количеством голосов было редактирование xrdp.ini
файл для изменения порта на фиксированное значение вместо -1
подстановочный знак, чтобы найти открытый порт.
Я попробовал это, но получил ошибку при подключении в первый раз, поэтому в итоге переключился обратно на -1
значение. Однако быстро наступило разочарование, и проблема не возобновилась, поэтому я снова посмотрел на INI-файл.
То, что работало для меня, и на самом деле было просто кое-что, что мне было интересно, это:
Изменить /etc/xrdp/xrdp.ini
Под [xrdp1]
где port=-1
Я заметил, что имя пользователя и пароль были установлены на ASK. Если вы установите port=ask
Вам будет предложена опция в приглашении для входа с именем пользователя и паролем для выбора порта.
Вместо того, чтобы устанавливать дополнительные пакеты, я обнаружил, что проще всего установить опцию ask, подключить первый сеанс (если у меня его еще нет) к порту -1 при входе в систему с именем пользователя и паролем.
После отключения сеанса, чтобы возобновить существующий сеанс, всегда входите в порт по умолчанию: 5910, и вы возобновите свой существующий сеанс, пока не перезагрузите удаленный компьютер или не завершите сеанс при выходе из системы.
Подвести итоги:
- Изменить
xrdp.ini
файл - задавать
port = ask
- подключиться с удаленного компьютера и при входе в систему, если у вас нет существующего сеанса, указать порт
-1
- для возобновления сеанса введите значение по умолчанию
5910
Я ненавижу быть парнем, который просто пропускает ссылку, но я следовал за руководством здесь, и это работало действительно хорошо. Теперь я могу войти в сеанс RDP с хостов Linux и Windows и снова подключиться к моему старому сеансу, если я уже входил в систему. Это лучшее руководство по установке, которое я нашел. К сожалению, стандартная установка пакета вызывает гораздо больше проблем, чем при выполнении исходных текстов.
Автор этой ссылки также сделал автоматический инструмент для установки и настройки, но я не пробовал, поэтому будьте осторожны.
Надеюсь, это поможет вам.
Проблема в том, что xrdp не всегда подключается к одному и тому же порту. Если это не так, и вы забыли номер порта, вы можете войти в сессию ssh и узнать номер по
netstat -tulpn | grep vnc
и вы получите что-то вроде следующего
tcp 0 0 127.0.0.1:5911 0.0.0.0:* LISTEN 5365/Xvnc
и тогда вы знаете, 5911 был порт, к которому вы подключены.
Если вы столкнулись с проблемой "сбой пароля", вы можете взглянуть на две проблемы в GitHub
Переподключиться к старому сеансу VNC - сбой пароля VNC
Ошибка пароля VNC при выборе существующего сеанса
Короче говоря, они упоминают, что указание номера порта больше не работает в последней версии.
На экране входа в систему с полем xrdp при первом подключении к удаленному рабочему столу должен появиться выпадающий список, отсюда выберите "vnc-any", затем введите IP-адрес компьютера и пароль, но оставьте порт при чем это должно помочь:)
1. Модифий ты xrdp.ini:
sudo vi /etc/xrdp/xrdp.ini
2. Измените настройки порта port=ask-1
в вашем правиле подключения:
[xrdp1]
name=sesman-Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=ask-1
3. Перезапустите службу xrdp.
sudo service xrdp restart
Вы должны увидеть следующую картинку при входе через удаленный рабочий стол. Окно входа в систему xrdp
1. При первом входе в систему вы можете увидеть этот номер порта:
Если вы забыли этот номер порта, вы можете использовать следующую команду для проверки:
netstat -peant | grep 59 | grep Xvnc
2. Вы можете повторно подключить последний сеанс по номеру вашего порта.
Повторно подключите последний сеанс
Ссылка: http://c-nergy.be/blog/?p=5305
Начиная с Linux Mint/Ubuntu 20, для решения общих проблем я всегда считал полезным избегать установки предварительно скомпилированных пакетов и вместо этого собирать их из исходного кода.
Не все функции включены в стандартных пакетах: например, звук и каналы буфера обмена должны быть явно включены с помощью
configure
переключатели, плюс файлы сопоставления клавиатуры часто устаревают, и некоторые клавиши, такие как фигурные скобки, у меня не работали. Большинство проблем волшебным образом исчезли, когда я установил скомпилированную версию.
Возможно, вы захотите скомпилировать и установить
xrdp
а также
xorgxrdp
(менеджер сеансов xrdp, аналогичный x11rdp), следуя инструкциям здесь и здесь , затем настройте
/etc/xrdp.ini
а также
/etc/xrdp/sesman.ini
файлы, последний используется
Xorg(xrdp)
. Я рекомендую отключить динамические каналы в первом, чтобы снизить потребление процессора клиентом и сервером.
На всякий случай я также использую скомпилированную версию клиента (Remmina), просто чтобы убедиться, что обе подходят к моим машинам как влитые.
Я столкнулся с этой проблемой на компьютере Debian. Использовал X11RDP-o-Matic для сборки пакетов xrdp 0.7. Перед обновлением до systemd переподключение сеанса xrdp работало нормально.
Глядя на дерево процессов, я мог видеть, что сессии больше не были детьми xrdp-sesman
, Оказалось, проблема с разрешениями при использовании systemd. Google нашел патч, который исправляет проблему.
Как вы идентифицируете работающее переподключение? Бежать ps axf
и посмотрите на дерево процессов для xrdp-sesman
, X11rdp, xrdp-chansrv, xrdp-sessvc
все должны бегать как дети. Если нет, xrdp-sesman
не будет знать, как подключиться к сеансу.
Вот как это выглядит при работе:
Я обнаружил, что при использовании клиента удаленного рабочего стола Windows для подключения к сеансу Linux сохранение той же конфигурации отображения и глубины цвета повторно подключит пользователя к тому же сеансу. Эти параметры можно настроить, выбрав "Показать параметры" в нижнем левом углу экрана запуска, а затем выбрав вкладку "Отображение".
Если вы не знаете, какие параметры отображения были у вашего существующего сеанса, запустите новый сеанс, а затем из окна терминала запустите
ps axf | grep vnc
. Параметры отображения ваших существующих и новых сеансов rdp будут иметь что-то вроде -geometry 1920x1080 -depth 16. Запишите эти значения, выйдите из нового сеанса, а затем попробуйте еще раз войти в xrdp, используя обнаруженные вами значения.
Вот что я сделал. Убедитесь, что tigervnc-сервер установлен, чтобы мы могли использовать Xvnc. Запустите сеанс VNC с конфигурацией по умолчанию (на самом деле я следовал руководству по установке Arch Linux для TigerVNC). Затем настройте свой Xrdp для использования этого сеанса VNC каждый раз. Также установите TigerVNC для запуска при загрузке или что-то. Это единственный раздел VNC в моем файле xrdp.ini:
[vnc-any]
name=vnc-any
lib=libvnc.so
ip=localhost
port=5901
username=na
password=YOURPASSWORD
#pamusername=asksame
#pampassword=asksame
#pamsessionmng=127.0.0.1
#delay_ms=2000
Этот поток UbuntuForum выглядит полезным - я сам не проверял - однако я скопировал приведенное здесь решение, чтобы завершить этот ответ.
Настройка RealVNC
1. Удаление стандартного сервера Ubuntu VNC (Vino):
Перейдите: Система -> Администрирование -> Диспетчер пакетов Synaptic. Найдите пакет "Vino", отметьте "Удалить", "Применить".
2. Установка TightVNC и XRDP:
Пока вы используете Synaptic Package Manager, seacrh для пакета "quietvnc" (будьте осторожны, а не "xtightvnc") и Mark For Installation. Аналогично, найдите пакет "xrdp" и отметьте также "Для установки". Применять. PS: если вы хотите, вы можете отказаться от любого другого пакета vnc, который вам не нужен!
3. Конфигурация XRDP (необязательно)
Откройте терминал и введите три следующие команды:
cd /etc/xrdp
cp xrdp.ini xrdp.ini.bak
sudo gedit /etc/xrdp/xrdp.ini
Удалите разделы Xrdp2-Xrdp6, оставьте только раздел Xrdp1. Ваш xrdp.ini должен выглядеть так:
[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
[xrdp1]
name=RDP_To_TightVNC
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
4. Подключение
Перезагрузите систему, и вы готовы к подключению!
Чтобы подключиться с другого компьютера с Ubuntu, используйте: Приложения -> Интернет -> Клиент сервера терминалов, введите IP-адрес вашего компьютера с Ubuntu VNC, используйте RDPv5 или RDP, нажмите Подключиться!
Чтобы подключиться с компьютера под управлением Windows, используйте: Пуск -> Выполнить -> mstsc, введите IP-адрес вашего компьютера с Ubuntu VNC, нажмите Подключиться.
При подключении используйте свои учетные данные Ubuntu (u/n и p/w) и удаленно войдите на свой рабочий стол.