Wie richte ich eine xrdp-Sitzung ein, die eine vorhandene Sitzung wiederverwendet?


57

Ich habe versucht, einen RDP-Terminalserver unter Verwendung von xrdp präzise einzurichten, und ich hatte erhebliche Probleme, eine funktionierende Konfiguration zu erhalten. Wenn sich ein Benutzer anmeldet, muss er eine Verbindung zu der vorhandenen Sitzung des Benutzers herstellen, falls vorhanden. Andernfalls wird eine neue Sitzung gestartet, und jede gestartete Sitzung muss LXDE starten. Welche Änderungen an der Standardkonfiguration muss ich vornehmen, damit dies funktioniert?


In meiner XRDP-Konfiguration (mit Ausnahme von Unity für Desktopsitzungen und Unity2D für Remotesitzungen) werden bei der Anmeldung als Benutzer automatisch die alten Sitzungen übernommen. Bekommt jeder Benutzer bei jeder Verbindung eine neue Sitzung?
agc93

Die beste Erklärung / Lösung, die ich im Internet gefunden habe, finden Sie an dieser Stelle. C-nergy.be/blog/?p=2879 Probieren Sie es aus. Ich hoffe, diese Informationen helfen
7:59

Antworten:


46

Ich hatte das gleiche Problem und fand gerade eine einfache Lösung. Ursprünglich habe ich xrdp nur mit der Standardprozedur installiert:

apt-get install xrdp

Danach dreht sich alles um Ihre xrdp.ini-Datei, die sich hier befindet:

/etc/xrdp/xrdp.ini

Um die Konfigurationsdatei des xrdp zu öffnen und zu bearbeiten, verwenden Sie:

sudo nano /etc/xrdp/xrdp.ini

Standardmäßig sieht das erste Skript zur Behandlung von xrdp-Sitzungen folgendermaßen aus:

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

Die wichtige Zeile ist port=-1, dass xrdp immer nach einem freien Port zum Verbinden sucht. Wenn Sie hier einen festen Port festlegen, kehrt der xrdp immer zurück und stellt eine Verbindung zu derselben Sitzung her. Ich habe meine so geändert, dass sie so aussieht:

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

Das ist es, ich denke, du könntest durchkommen, wenn du nur den port=-1auf änderst port=5912. Mein xrdp stellt immer eine neue Verbindung zu einer vorhandenen Sitzung her, wobei immer der gleiche Port verwendet wird.


2
Diese Lösung funktioniert gut für mich, aber ich sollte darauf hinweisen, dass jeder, der sich mit demselben Computer verbindet, dieselbe Sitzung erhält, auch wenn sich jemand anderes in dieser Sitzung angemeldet hat.
VeeTheSecond

7
das funktioniert aber nur, wenn es bereits eine sitzung gibt. Das erste Mal in, gibt es keine Sitzung, so dass keine Verbindung zu Port 5912 hergestellt werden kann.
stu

4
habe das gleiche Problem .. scheint, dass es standardmäßig versucht, eine Verbindung mit 5911port zu öffnen (Sie können es bemerken, wenn xrpd eine Verbindung herstellt). Also habe ich von port = -1 zu port = ask5911 gewechselt. Auf diese Weise wird standardmäßig 5911 verwendet, aber Sie können diesen Port ändern, wenn Sie Benutzer / Passwort während der Verbindung eingeben (daher müssen Sie im Fehlerfall nichts neu konfigurieren ..)
Maxym

1
Dieses Verhalten hängt ausschließlich von der Implementierung des VNC-Servers ab. Unter Centos verwende ich tigervnc, das sich immer einer bestehenden Sitzung anschließt oder eine mit der Einstellung port = -1 erstellt. Unter Ubuntu ist der Standard jedoch tightvncserver, der nicht dasselbe Verhalten aufweist. Spielen Sie einfach mit VNC-Implementierungen, wenn überhaupt.
Denys S.

1
Der Standardport ist 5910, siehe askubuntu.com/a/527975/592751
Pedi T.

16

Ich möchte eine bestehende Antwort verbessern. Die am häufigsten gewählte Antwort war das Bearbeiten der xrdp.iniDatei, um den Port auf einen festen Wert anstelle des -1Platzhalters zu ändern und einen offenen Port zu finden.

Das habe ich versucht, aber beim ersten Verbinden ist ein Fehler aufgetreten, sodass ich wieder auf den -1Wert zurückgeschaltet habe. Die Frustration stellte sich jedoch schnell ein, da das Problem weiterhin bestand, dass ich nicht wieder aufgenommen wurde, und ich schaute mir die INI-Datei erneut an.

Was bei mir funktioniert hat und worauf ich wirklich gespannt war, war Folgendes:

Bearbeiten Sie die /etc/xrdp/xrdp.ini

Unter [xrdp1]wo port=-1ich bemerkte, wurden Benutzername und Passwort auf ASK gesetzt. Wenn Sie festlegen, erhalten port=askSie an der Anmeldeaufforderung die Option, einen Port mit Benutzername und Kennwort auszuwählen.

Anstatt zusätzliche Pakete zu installieren, stellte ich fest, dass es am einfachsten ist, die Option ask zu setzen. Verbinden Sie die ERSTE Sitzung (sofern noch keine aktiv ist) über Port -1 beim Anmelden mit Benutzername und Kennwort.
Wenn Sie nach dem Trennen der Sitzung eine vorhandene Sitzung fortsetzen möchten, melden Sie sich immer am Standardport 5910 an, und Sie setzen Ihre vorhandene Sitzung fort, bis Sie den Remotecomputer neu starten oder die Sitzung beenden, wenn Sie sich abmelden.

Zusammenfassen:

  • Bearbeiten Sie die xrdp.iniDatei
  • einstellen port = ask
  • Stellen Sie eine Verbindung vom Remotecomputer aus her, und geben Sie bei der Anmeldung den Port an, wenn keine Sitzung vorhanden ist -1
  • Um eine Sitzung fortzusetzen, geben Sie den Standardwert von ein 5910

Hat für mich gearbeitet. Obwohl ich mich nicht daran erinnern werde, wie 5910 weiterging.
Vesanto

7
Ich konnte den Eintrag erfolgreich in [xrdp1] ändern. . . port = ask5910 Der Standardwert für den Port ist 5910, sodass Sie sich nicht daran erinnern müssen, wie Vesanto sagte (ich würde mich auch nie daran erinnern, Vesanto!), sondern auch die Möglichkeit haben, ihn zu ändern, wenn Sie eine neue Desktopsitzung erstellen möchten Sagen wir Port 5911. Ich habe dies auf Ubuntu 16.04 getestet.
Hoekma

2
^ Das ist die beste Lösung, die ich auch gefunden habe.
Nacht - Reinstate Monica

Auf einem frisch gebooteten Rpi3 habe ich eine neue Sitzung mit Port -1 gestartet und bin dann mit einem anderen Computer hereingekommen und habe Port 5910 verwendet - es hat dieselbe Sitzung aufgenommen. Wenn Sie Dinge auf einem Computer verschieben, können Sie dies auf dem anderen Computer beobachten.
SDsolar

Wenn Sie es dann erneut tun, aber eine Portnummer von -1 vergeben, erhalten Sie eine neue Sitzung.
SDsolar

7

Ich hasse es, der Typ zu sein, der gerade einen Link dropt, aber ich bin der Anleitung hier gefolgt und es hat wirklich gut funktioniert. Ich kann mich jetzt von Linux- und Windows-Hosts aus bei einer RDP-Sitzung anmelden und mich wieder mit meiner alten Sitzung verbinden, wenn ich mich zuvor angemeldet habe. Dies ist die beste Anleitung für die Installation, die ich gefunden habe. Leider verursacht die Standardpaketinstallation weitaus mehr Probleme als die Installation aus dem Quellcode.

Der Autor dieses Links hat auch ein automatisches Tool zum Installieren und Konfigurieren erstellt, aber ich habe es nicht ausprobiert. Seien Sie also vorsichtig.

Hoffe das hilft dir weiter.


Vielen Dank für die Bereitstellung des Links. Bedeutet dies, dass kein funktionierendes Deb-Paket für xrdp existiert?
Jan

Ich habe es vor einiger Zeit gesehen, aber es funktionierte nicht richtig mit neueren Versionen von Ubuntu. Soweit mir bekannt ist, gibt es unter Ubuntu-Versionen nach 10.04 kein funktionierendes .deb-Paket für XRDP. Gerne wird natürlich das Gegenteil bewiesen, da diese Methode enttäuschend irritierend ist.
Agc93

Überprüfen Sie meine Lösung, die auf Skript für Ubuntu 12 64bithttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855

Ich denke, was für diese Frage Sinn macht, ist das Erstellen einer eigenen .xsessionDatei in Ihrem Home-Verzeichnis. Wenn Sie beispielsweise gnome-desktop verwenden, führen Sieecho gnome-session >> ~/.xsession
artificerpi

4

Das Problem ist, dass xrdp nicht immer mit demselben Port verbunden ist. Falls dies nicht der Fall ist und Sie die Portnummer vergessen haben, können Sie sich in eine SSH-Sitzung einloggen und die Nummer mit herausfinden

netstat -tulpn | grep vnc

und Sie werden so etwas wie das Folgende bekommen

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

und dann wissen Sie, dass 5911 der Port war, mit dem Sie verbunden waren.


2

Auf dem Anmeldebildschirm mit der xrdp-Box sollte sich beim ersten Verbinden mit dem Remotedesktop eine Dropdown-Box befinden. Wählen Sie hier "vnc-any" und geben Sie die IP-Adresse des Computers und das Kennwort ein. Lassen Sie den Port jedoch bei "what" es ist, das sollte helfen :)


Das sieht am einfachsten aus und funktioniert bei mir. Toll. Keine komplizierte Installation, Kompilierung usw.
Josef


1

1. Ändere deine xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2.Ändern Sie die Porteinstellung port=ask-1in Ihrer Verbindungsregel:

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

3.Starten Sie Ihren xrdp-Dienst neu

sudo service xrdp restart

Das folgende Bild sollte angezeigt werden, wenn Sie sich über den Remotedesktop anmelden. Bildbeschreibung hier eingeben

1. Beim ersten Login sehen Sie diese Portnummer. Beispiel: 5912: Bildbeschreibung hier eingeben

Wenn Sie diese Portnummer vergessen haben, können Sie Folgendes überprüfen:

netstat -peant | grep 59 | grep Xvnc

2. Sie können die letzte Sitzung über Ihre Portnummer erneut verbinden. Bildbeschreibung hier eingeben


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


0

Ich bin auf einem Debian-Rechner auf dieses Problem gestoßen. Verwendet X11RDP-o-Matic , um xrdp 0.7-Pakete zu erstellen. Vor dem Upgrade auf systemd hat xrdp session reconnect einwandfrei funktioniert.

Beim Betrachten des Prozessbaums konnte ich feststellen, dass die Sitzungen nicht mehr von Kindern waren xrdp-sesman. Es stellte sich heraus, dass dies bei Verwendung von systemd ein Problem mit den Berechtigungen darstellt. Google hat einen Patch gefunden , der das Problem behebt.

Wie erkennt man eine funktionierende Wiederverbindung? Führen Sie ps axfden Prozessbaum aus und suchen Sie nach xrdp-sesman. X11rdp, xrdp-chansrv, xrdp-sessvcsollten alle als Kind laufen. Wenn dies nicht der xrdp-sesmanFall ist, wissen Sie nicht, wie Sie die Verbindung zur Sitzung wiederherstellen können.

So sieht es bei der Arbeit aus:

guter xrdp-sitzungsprozess


0

Hier ist was ich getan habe. Stellen Sie sicher, dass tigervnc-server installiert ist, damit wir Xvnc verwenden können. Starten Sie eine VNC-Sitzung mit der Standardkonfiguration (ich habe tatsächlich die Installationsanleitung für Arch Linux für TigerVNC befolgt). Konfigurieren Sie dann Ihren Xrdp so, dass er diese VNC-Sitzung jedes Mal verwendet. Stellen Sie TigerVNC auch so ein, dass es beim Booten oder so startet. Dies ist der einzige VNC-Abschnitt in meiner xrdp.ini-Datei:

[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

-1

Dieser UbuntuForum-Thread sieht nützlich aus - ich habe ihn nicht selbst getestet - ich habe jedoch die hier angegebene Lösung kopiert, um diese Antwort zu vervollständigen.

RealVNC-Setup

1. Deinstallation des Standard Ubuntu VNC Servers (Vino):

Gehen Sie zu: System -> Administration -> Synaptic Package Manager Suchen Sie nach dem Paket "Vino", Mark For Removal, Apply.

2. Installation von TightVNC und XRDP:

Während Sie Synaptic Package Manager verwenden, müssen Sie seacrh für das Paket "tightvnc" (seien Sie vorsichtig, nicht " xtightvnc ") und Mark For Installation (Zur Installation markieren ) ausführen . Suchen Sie ebenfalls nach dem Paket "xrdp" und markieren Sie auch für die Installation. Anwenden. PS: Wenn Sie möchten, können Sie jedes andere "vnc" -Paket verwerfen, das Sie nicht benötigen!

3. Konfiguration von XRDP (optional)

Öffnen Sie ein Terminal und geben Sie die drei folgenden Befehle ein:

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

Entfernen Sie die Abschnitte Xrdp2-Xrdp6, und belassen Sie nur den Abschnitt Xrdp1. Deine xrdp.ini sollte so aussehen:

[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. Anschließen

Starten Sie das System neu und Sie können eine Verbindung herstellen!

Um eine Verbindung von einem anderen Ubuntu-Computer herzustellen, verwenden Sie: Programme -> Internet -> Terminal Server Client, geben Sie die IP Ihres Ubuntu VNC-Computers ein, verwenden Sie RDPv5 oder RDP, und klicken Sie auf Verbinden!

Um eine Verbindung von einem Windows-basierten Computer herzustellen, verwenden Sie: Start -> Ausführen -> mstsc, geben Sie die IP Ihres Ubuntu VNC-Computers ein und klicken Sie auf Verbinden.

Wenn Sie verbunden sind, verwenden Sie Ihre Ubuntu-Benutzerkontodaten (u / n und p / w) und melden Sie sich remote bei Ihrem Desktop an.


Hast du das tatsächlich getestet? Es sieht so aus, als hätten Sie den Link nur wörtlich kopiert und eingefügt. Wenn Sie kopieren und einfügen, geben Sie in Ihrer Antwort die Quelle an.
fossfreedom

@fossfreedom Nein, ich habe nicht getestet, aber versucht zu helfen. Übrigens habe ich bereits in Quelle erwähnt this may help you.
Rahul Virpara

Vielleicht sollten Sie Ihre Quelle und die Richtigkeit der Antwort genauer angeben. Siehe meine Bearbeitung.
fossfreedom
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.