LINUX.ORG.RU
решено ФорумAdmin

Сессии в xrdp

 ,


1

2

Выкурил тонны мануалов, собрал, поставил, работает. Даже почти так как надо. Интересует следующий момент: Есть сессия. Вхожу в неё с одного компа, захожу с другого - заходит в новую сессию. Как задать xrdp чтобы он создавал для одного пользователя одну сессию? Это крайне не удобно, что он создаёт новую сессию. Мне нужно чтобы с любого компьютера вход был в уже существующую сессию, а не только с моего. И ещё момент - как перенаправить xrdp коннектить к сущемтвующим сессиям? У меня настроен X11vnc, который коннектится к существующим, но vnc требует отдельного клиент и это не удобно ни для меня, ни для других пользователей. То есть у меня есть 2 продукта, со своими плюсами и минусами. Как их подружить или как донастроить xrdp, дабы он работал так же как и x11vnc? Всё поднялось в Open SuSE.

конфиг sesman.ini:

[Globals] ListenAddress=127.0.0.1 ListenPort=3350 EnableUserWindowManager=1 UserWindowManager=startwm.sh DefaultWindowManager=startwm.sh

[Security] AllowRootLogin=1 MaxLoginRetry=4 TerminalServerUsers=tsusers TerminalServerAdmins=tsadmins

[Sessions] X11DisplayOffset=10 MaxSessions=10 KillDisconnected=0 IdleTimeLimit=0 DisconnectedTimeLimit=0

[Logging] LogFile=xrdp-sesman.log LogLevel=DEBUG EnableSyslog=1 SyslogLevel=DEBUG

[X11rdp] param1=-bs param2=-ac param3=-nolisten param4=tcp param5=-uds

[Xvnc] param1=-bs param2=-ac param3=-nolisten param4=tcp param5=-localhost param6=-dpi param7=96

конфиг xrdp.ini:

[globals] bitmap_cache=yes bitmap_compression=yes port=3389 crypt_level=low channel_code=1 max_bpp=16 fork=yes # regulate if the listening socket use socket option tcp_nodelay # no buffering will be performed in the TCP stack tcp_nodelay=yes # regulate if the listening socket use socket option keepalive # if the network connection disappear without close messages the connection will be closed tcp_keepalive=yes #black=000000 #grey=d6d3ce #dark_grey=808080 #blue=08246b #dark_blue=08246b #white=ffffff #red=ff0000 #green=00ff00 #background=626c72 #autorun=xrdp1 #hidelogwindow=yes

[Logging] LogFile=xrdp.log LogLevel=DEBUG EnableSyslog=1 SyslogLevel=DEBUG # LogLevel and SysLogLevel could by any of: core, error, warning, info or debug

[channels] # Channel names not listed here will be blocket by XRDP. # You can block any channel by setting its value to false. # IMPORTANT! All channels are not supported in all use # cases even if you set all values to true. rdpdr=true rdpsnd=true drdynvc=true cliprdr=true rail=true

[xrdp1] name=Xvnc lib=libvnc.so.0 username=ask password=ask ip=127.0.0.1 port=-1

[xrdp2] name=X11rdp lib=libxup.so.0 username=ask password=ask ip=127.0.0.1 port=-1 xserverbpp=16 code=10

X11vnc запускется путём: x11vnc -dontdisconnect -display :0 -shared -noxfixes -forever -rfbport 5900 -bg -o /var/log/x11vnc.log -rfbauth /etc/.vnc/passwd Вот где его конфиги я так, на вскидку, не помню.

Пробовал в секцию sesman.ini [Xvnc] добавлять tty1 или другой - не помогает. X11rdp не запускается. И в логах xrdp или sesman ничего не говорится про то, почему именно оно не запускается. Xvnc - запускается, но не отвечает описанным выше требованиям.



Последнее исправление: cetjs2 (всего исправлений: 1)

Чтобы переподключаться к одной сессии, попробуй в xrdp.ini, в разделе [xrdp1] явно указать порт (вместо port=-1), например: port=5902

boneshaker
()

И насчет подключения к уже существующим «реальным» сессиям. Давно, у меня была такая конфигурация (через xrdp можно было заходить либо на спавнящиеся самим xrdp Xvnc сессии, либо на существующие «нормальные» Xorg сессии), к сожалению, конфигов сейчас под рукой нет. Но, если память не подводит, надо в Xorg включать загрузку модуля vnc, и создавать раздел в xrdp.ini для подключения к нему (с указанием реального порта).

Или же, запускать x11vnc для каждой «реальной» X сесссии через xinitrc/xinetd, и также прописать его в xrdp.ini

boneshaker
()
Ответ на: комментарий от boneshaker

Если в Xorg уже прописана загрузка vnc модуля, то при создании раздела с ссылкой на 5900 порт у меня должно получится подключение к реальной сессии?

PearlyDragon
() автор топика
Ответ на: комментарий от PearlyDragon

Если vnc модуль работает и слушает 5900 - то да, должно получиться. Если нет, смотреть netstat'ом, слушает-ли, если не слушает, смотреть лог, почему нет. Или сразу перейти ко второму варианту, с использованием x11vnc вместо vnc модуля.

boneshaker
()
Ответ на: комментарий от boneshaker

Есть модуль x11vnc, который в автостарте запускается и смотрит в 5900 порт. Простое прописывание порта 5902 или 5900 приводит к невозможности законнектится к серверу. Если я правильно понимаю механику, то модуль vnc слушает тот порт, который ему передаёт в параметрах xrdp-sesman. xrdp-sesman слушает 3350, который отдаётся модулям vnc на прослушку и при некорректном завершении sesman'а они не отдают порт и приходится их убивать руками, чтобы запустить sesman. Как его послать смотреть x11vnc заместо того vnc, который запускает xrdp?

PearlyDragon
() автор топика
Ответ на: комментарий от PearlyDragon

УРА!

Таки нашёл, что делает невозможным создание нескольких сессий одного пользователя!

Кому надо: Это настраивает параметр fork=yes в конфиге xrdp.ini. Он стоит в yes по умолчанию и создаёт сессию для каждого компьютера.

Поставил в no и теперь с любого компа в свою сессию вхожу. Самое интересное - пол дня убил на поиск того, что это за опция и так и не нашёл ни одного описания что это такое и с чем его едят. Может плохо искал.

Вопрос о том, как подменить xvnc на x11vnc пока волнует.

PearlyDragon
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.