Jak skonfigurować sesję xrdp, która ponownie wykorzystuje istniejącą sesję?

57

Próbowałem skonfigurować serwer terminali RDP dokładnie przy użyciu xrdp i miałem poważne problemy z uzyskaniem działającej konfiguracji. Gdy użytkownik się loguje, muszę go połączyć z istniejącą sesją tego użytkownika, jeśli istnieje, w przeciwnym razie rozpoczęcie nowej sesji, a każda rozpoczęta sesja musi uruchomić LXDE. Jakie zmiany w konfiguracji domyślnej muszę wprowadzić, aby to zadziałało?

nloewen
źródło
W mojej konfiguracji XRDP (poza tym, że korzystam z Unity na sesjach pulpitu i Unity2D dla sesji zdalnych), logowanie się jako użytkownik automatycznie odbiera ich stare sesje. Czy każdy użytkownik otrzymuje nową sesję za każdym razem, gdy się łączy?
agc93
Najlepsze wyjaśnienie / rozwiązanie, które znalazłem w Internecie, można znaleźć w tej lokalizacji c-nergy.be/blog/?p=2879 Spróbuj, mam nadzieję, że te informacje pomogą
gyest

Odpowiedzi:

46

Miałem ten sam problem i właśnie znalazłem łatwe rozwiązanie. Pierwotnie zainstalowałem xrdp przy użyciu standardowej procedury:

apt-get install xrdp

Po tym wszystkim chodzi o plik xrdp.ini, który znajduje się tutaj:

/etc/xrdp/xrdp.ini

Aby otworzyć i edytować plik konfiguracyjny xrdp, użyj:

sudo nano /etc/xrdp/xrdp.ini

domyślnie pierwszy skrypt obsługi sesji xrdp wygląda następująco:

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

Ważną linią jest port=-1to, że xrdp zawsze szuka wolnego portu do połączenia. Jeśli ustawisz tutaj stały port, xrdp zawsze wróci i połączy się z tą samą sesją. Zmieniłem mój, więc wygląda to tak:

[xrdp1]
name=customsessionname
lib=libvnc.so
username=myusername
password=ask
ip=127.0.0.1
port=5912

To tyle, myślę, że można uciec tylko zmieniając port=-1się port=5912. Mój xrdp zawsze ponownie łączy się z istniejącą sesją, zawsze używając tego samego portu.

jeffery_the_wind
źródło
2
To rozwiązanie działa dobrze dla mnie, ale powinienem zauważyć, że każdy, kto łączy się z tym samym komputerem, dostanie tę samą sesję, nawet jeśli ktoś zaloguje się w tej sesji.
VeeTheSecond
7
działa to tylko wtedy, gdy istnieje już sesja. Po raz pierwszy w, nie ma sesji, więc nie trafia do żadnego z portem 5912.
STU
4
dostał ten sam problem .. wydaje się, że domyślnie próbuje otworzyć połączenie za pomocą 5911port (można to zauważyć, gdy łączy się xrpd). Zmieniłem więc z portu = -1 na port = ask5911. W ten sposób domyślnie jest używane 5911, ale można zmienić ten port po wprowadzeniu użytkownika / hasła podczas łączenia (więc nie trzeba niczego konfigurować w przypadku błędów ..)
Maxym
1
To zachowanie zależy wyłącznie od implementacji serwera VNC. Pod centos używam tigervnc, który zawsze dołącza do istniejącej sesji lub tworzy taką z ustawieniem port = -1. Jednak w Ubuntu domyślnie jest tightvncserver, który nie ma takiego samego zachowania. Po prostu graj z implementacjami VNC, jeśli w ogóle.
Denys S.,
1
Domyślny port to 5910, patrz askubuntu.com/a/527975/592751
Pedi T.
16

Chciałbym poprawić istniejącą odpowiedź. Najczęściej głosowaną odpowiedzią była edycja xrdp.inipliku w celu zmiany portu na stałą wartość zamiast -1symbolu wieloznacznego w celu znalezienia otwartego portu.

Próbowałem tego, ale wystąpił błąd podczas pierwszego połączenia, więc ostatecznie wróciłem do -1wartości. Szybko pojawiła się frustracja, a problem nie został wznowiony, więc ponownie spojrzałem na plik ini.

To, co zadziałało i naprawdę było czymś, co mnie ciekawi, to:

Edytuj /etc/xrdp/xrdp.ini

W miejscu, w [xrdp1]którym port=-1zauważyłem, nazwa użytkownika i hasło zostały ustawione na ZAPYTAJ. Jeśli ustawisz port=ask, pojawi się opcja przy logowaniu z nazwą użytkownika i hasłem, aby wybrać port.

Zamiast instalować dodatkowe pakiety, znalazłem najprostszą poprawkę do ustawienia opcji ask, połącz PIERWSZĄ sesję (jeśli jeszcze nie mam uruchomionej) na porcie -1 przy logowaniu z nazwą użytkownika i hasłem.
Po rozłączeniu sesji, aby wznowić istniejącą sesję, zawsze loguj się na domyślnym porcie: 5910 i wznawiasz istniejącą sesję, dopóki nie uruchomisz ponownie komputera zdalnego lub nie zakończysz sesji po wylogowaniu.

Podsumowując:

  • Edytuj xrdp.iniplik
  • zestaw port = ask
  • połącz ze zdalnego komputera, a przy logowaniu, jeśli nie masz sesji, określ port -1
  • aby wznowić sesję, wprowadź wartość domyślną 5910
Pytanie Rzeczywistość
źródło
Pracował dla mnie. Chociaż nie będę pamiętał, że 5910 pójdzie naprzód.
Vesanto
7
Udało mi się zmienić wpis na: [xrdp1]. . . port = ask5910 Ustawia domyślnie port na 5910, więc nie musisz go zapamiętywać, jak powiedział Vesanto (ja też nigdy bym tego nie pamiętał, Vesanto!), ale daje także opcję zmiany, jeśli chcesz utworzyć nową sesję pulpitu dalej, powiedzmy port 5911. Testowałem to na Ubuntu 16.04.
hoekma
2
^ to najlepsze rozwiązanie, jakie znalazłem.
Nacht - Przywróć Monikę
Na świeżo uruchomionym Rpi3 rozpocząłem nową sesję z portem -1, a potem przyszedłem z innym komputerem i użyłem portu 5910 - wybrałem tę samą sesję. Gdy przenosisz rzeczy na jednym komputerze, możesz zobaczyć, jak to się dzieje na drugim.
SDsolar
Jeśli zrobisz to jeszcze raz, ale nadasz mu numer portu -1, otrzymasz nową sesję.
SDsolar
7

Nienawidzę być facet, który właśnie spada link, ale I przestrzegać instrukcji tutaj i to działało bardzo dobrze. Mogę teraz zalogować się do sesji RDP z hostów Linux i Windows i ponownie połączyć się ze starą sesją, jeśli zalogowałem się wcześniej. To najlepszy przewodnik po instalacji, jaki znalazłem. Niestety standardowa instalacja pakietu powoduje o wiele więcej problemów niż robienie tego ze źródła.

Autor tego linku stworzył również automatyczne narzędzie do instalacji i konfiguracji, ale nie próbowałem tego, więc bądź ostrożny.

Mam nadzieję, że ci pomoże.

agc93
źródło
Dziękujemy za podanie linku. Czy to oznacza, że ​​nie działa żaden działający pakiet deb dla xrdp?
stycznia
Widziałem go jakiś czas temu, ale nie działał poprawnie z nowszymi wersjami Ubuntu. O ile mi wiadomo, nie ma działającego pakietu .deb dla XRDP w wersjach Ubuntu po 10.04. Oczywiście cieszymy się z błędu, ponieważ ta metoda jest rozczarowująco irytująca.
agc93
sprawdź moje rozwiązanie, które jest super automatyczne w skrypcie dla Ubuntu 12 64bithttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855
Myślę, że sensownym dla tego pytania jest utworzenie własnego .xsessionpliku w twoim domu, reż. Na przykład jeśli używasz gnome-desktop, uruchomecho gnome-session >> ~/.xsession
artificerpi
4

Problem polega na tym, że xrdp nie zawsze łączy się z tym samym portem. Jeśli tak się nie stanie i zapomnisz numer portu, możesz zalogować się do sesji ssh i znaleźć numer

netstat -tulpn | grep vnc

a otrzymasz coś takiego

tcp        0      0 127.0.0.1:5911          0.0.0.0:*               LISTEN      5365/Xvnc

i wtedy wiesz, że 5911 był portem, z którym się łączyłeś.

YH Wu
źródło
2

na ekranie logowania z polem xrdp przy pierwszym połączeniu ze zdalnym pulpitem powinno być rozwijane pole, stąd wybierz „vnc-any”, a następnie wprowadź adres IP komputera i hasło, ale zostaw port to powinno pomóc :)

Dewi Jones
źródło
To wygląda na najłatwiejsze i działa dla mnie. Wspaniały. Bez skomplikowanej instalacji, kompilacji itp.
josef
1

1. Zmodyfikuj xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2. Zmień ustawienie portu port=ask-1w regule połączenia:

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

3. Uruchom ponownie usługę xrdp

sudo service xrdp restart

Podczas logowania za pomocą zdalnego pulpitu powinieneś zobaczyć następujący obrazek. wprowadź opis zdjęcia tutaj

1. Przy pierwszym logowaniu możesz zobaczyć ten numer portu. Przykład: 5912: wprowadź opis zdjęcia tutaj

Jeśli zapomnisz tego numeru portu, możesz użyć następującego polecenia, aby to sprawdzić:

netstat -peant | grep 59 | grep Xvnc

2. Możesz ponownie połączyć ostatnią sesję za pomocą numeru portu. wprowadź opis zdjęcia tutaj


Patrz: http://c-nergy.be/blog/?p=5305

W. Dan
źródło
0

Napotkałem ten problem na maszynie Debiana. Używane X11RDP-o-Matic , aby zbudować xrdp 0,7 pakiety. Przed uaktualnieniem do systemd ponowne połączenie sesji xrdp działało dobrze.

Patrząc na drzewo procesów, zauważyłem, że sesje nie były już dziećmi xrdp-sesman. Okazało się, że jest to problem z uprawnieniami podczas korzystania z systemd. Google znalazło łatkę, która rozwiązuje problem.

Jak rozpoznać działające ponowne połączenie? Uruchom ps axfi spójrz na drzewo procesów xrdp-sesman. X11rdp, xrdp-chansrv, xrdp-sessvcpowinni wszyscy biegać jak dziecko. Jeśli nie są, nie xrdp-sesmanbędą wiedziały, jak ponownie połączyć się z sesją.

Oto jak to wygląda podczas pracy:

dobry proces sesji xrdp

h0tw1r3
źródło
0

Oto co zrobiłem. Upewnij się, że serwer tigervnc jest zainstalowany, abyśmy mogli używać Xvnc. Uruchom sesję VNC z domyślną konfiguracją (faktycznie postępowałem zgodnie z instrukcją instalacji Arch Linux dla TigerVNC). Następnie skonfiguruj Xrdp, aby za każdym razem korzystał z tej sesji VNC. Ustaw także TigerVNC na uruchamianie przy starcie lub coś takiego. To jest jedyna sekcja VNC w moim pliku 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
Nevar
źródło
-1

Ten wątek UbuntuForum wygląda na przydatny - sam tego nie testowałem - jednak skopiowałem podane tutaj rozwiązanie, aby uzupełnić tę odpowiedź.

Konfiguracja RealVNC

1. Deinstalacja domyślnego serwera Ubuntu VNC (Vino):

Przejdź do: System -> Administracja -> Menedżer pakietów Synaptic Wyszukaj pakiet „Vino”, Oznacz do usunięcia, Zastosuj.

2. Instalacja TightVNC i XRDP:

Podczas korzystania z Menedżera pakietów Synaptic, seacrh dla pakietu „tightvnc” (bądź ostrożny, a nie „ xtightvnc ”) i zaznacz do instalacji. Podobnie wyszukaj pakiet „xrdp” i Oznacz także do instalacji. Zastosować. PS: jeśli chcesz, możesz odrzucić dowolny inny pakiet „vnc”, którego nie potrzebujesz!

3. Konfiguracja XRDP (opcjonalnie)

Otwórz terminal i wpisz trzy następujące polecenia:

 cd /etc/xrdp
 cp xrdp.ini xrdp.ini.bak 
 sudo gedit /etc/xrdp/xrdp.ini

Usuń sekcje Xrdp2-Xrdp6, pozostaw tylko sekcję Xrdp1. Twój plik xrdp.ini powinien wyglądać następująco:

[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. Łączenie

Uruchom ponownie system i możesz się połączyć!

Aby połączyć się z innego komputera Ubuntu, użyj: Aplikacje -> Internet -> Klient serwera terminali, wpisz adres IP swojego komputera Ubuntu VNC, użyj RDPv5 lub RDP, kliknij Połącz!

Aby połączyć się z komputera z systemem Windows, użyj: Start -> Uruchom -> mstsc, wpisz adres IP komputera z Ubuntu VNC, kliknij Połącz.

Po połączeniu użyj poświadczeń konta użytkownika Ubuntu (u / n i p / w) i zdalnie zaloguj się na pulpicie.

Rahul Virpara
źródło
Czy rzeczywiście to przetestowałeś? Wygląda na to, że właśnie skopiowałeś i wkleiłeś dosłownie link. Jeśli kopiujesz i wklejasz, potwierdź źródło w swojej odpowiedzi.
fossfreedom
@fossfreedom nie, nie testowałem, ale próbowałem pomóc. BTW Wspomniałem już o źródle w this may help you.
Rahul Virpara
Być może powinieneś być bardziej precyzyjny niż źródło i prawdziwość odpowiedzi. Zobacz moją edycję.
fossfreedom