Come posso impostare una sessione xrdp che riutilizza una sessione esistente?


57

Ho cercato di impostare un server terminal RDP in modo preciso usando xrdp e ho avuto grossi problemi a ottenere una configurazione funzionante. Quando un utente accede, ne ho bisogno per connettersi alla sessione esistente di quegli utenti, se esiste, altrimenti avviare una nuova sessione e qualsiasi sessione avviata deve avviare LXDE. Quali modifiche alla configurazione predefinita devo apportare affinché funzioni?


Nella mia configurazione XRDP (tranne per il fatto che eseguo Unity su sessioni desktop e Unity2D per sessioni remote), accedendo come utente raccoglie automaticamente le loro vecchie sessioni. Ogni utente riceve una nuova sessione ogni volta che si connette?
agc93,

La migliore spiegazione / soluzione che ho trovato su Internet può essere trovata in questa posizione c-nergy.be/blog/?p=2879 Fai una prova Spero che questa informazione sia d'aiuto
gyest

Risposte:


46

Ho avuto lo stesso problema e ho appena trovato una soluzione semplice. Inizialmente ho appena installato xrdp usando la procedura standard:

apt-get install xrdp

Dopodiché, è tutto sul tuo file xrdp.ini, che si trova qui:

/etc/xrdp/xrdp.ini

Per aprire e modificare il file di configurazione di xrdp usare:

sudo nano /etc/xrdp/xrdp.ini

per impostazione predefinita, il primo script di gestione della sessione xrdp è simile al seguente:

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

La linea importante è che port=-1questo rende xrdp sempre alla ricerca di una porta libera per connettersi. Se si imposta una porta fissa qui, l'xrdp tornerà sempre indietro e si connetterà alla stessa sessione. Ho cambiato il mio in modo che assomigli a questo:

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

Ecco fatto, credo che si potrebbe ottenere via con solo cambiando l' port=-1a port=5912. Il mio xrdp si riconnette sempre alla sessione esistente usando sempre la stessa porta.


2
Questa soluzione funziona bene per me, ma dovrei sottolineare che chiunque si connette alla stessa macchina otterrà la stessa sessione, anche se qualcun altro ha effettuato l'accesso in quella sessione.
VeeTheSecond

7
funziona solo se esiste già una sessione esistente. La prima volta, non c'è alcuna sessione, quindi non riesce a connettersi alla porta 5912.
stu

4
ha lo stesso problema .. sembra che per impostazione predefinita cerchi di aprire una connessione usando 5911port (puoi notarlo quando xrpd si sta connettendo). Quindi sono passato da port = -1 a port = ask5911. In questo modo 5911 viene utilizzato per impostazione predefinita, ma è possibile modificare quella porta quando si immette l'utente / password durante la connessione (quindi non è necessario riconfigurare nulla in caso di errori ..)
Maxym

1
Questo comportamento dipende strettamente dall'implementazione del server vnc. In centos sto usando tigervnc, che si unisce sempre alla sessione esistente o ne crea una con l'impostazione port = -1. Tuttavia, sotto Ubuntu il valore predefinito è tightvncserver, che non ha lo stesso comportamento. Basta giocare con le implementazioni vnc, se non altro.
Denys S.

1
La porta predefinita è 5910, vedere askubuntu.com/a/527975/592751
Pedi T.

16

Vorrei migliorare una risposta esistente. La risposta più votata è stata quella di modificare il xrdp.inifile per cambiare la porta con un valore fisso al posto del -1carattere jolly per trovare una porta aperta.

L'ho provato, ma ho riscontrato un errore durante la connessione la prima volta, quindi sono tornato al -1valore. La frustrazione si è rapidamente affermata, anche se il problema è rimasto di non riprendere, quindi ho guardato di nuovo il file ini.

Ciò che ha funzionato per me ed era davvero qualcosa di cui ero curioso era questo:

Modifica il /etc/xrdp/xrdp.ini

Sotto [xrdp1]dove port=-1ho notato che il nome utente e la password erano impostati su ASK. Se impostato, port=askti verrà data l'opzione al prompt di login con nome utente e password per scegliere una porta.

Invece di installare pacchetti aggiuntivi, ho trovato la soluzione più semplice per impostare l'opzione ask, collegare la PRIMA sessione (se non ne ho già una in esecuzione) sulla porta -1 all'accesso con nome utente e password.
Dopo aver disconnesso la sessione, per riprendere una sessione esistente accedi sempre alla porta predefinita: 5910 e riprenderai la sessione esistente fino a quando non riavvierai il computer remoto o terminerai la sessione quando ti disconnetti.

Riassumere:

  • Modifica il xrdp.inifile
  • impostato port = ask
  • connettersi dal computer remoto e all'accesso se non si dispone di una sessione esistente, specificare la porta -1
  • per riprendere una sessione inserire il valore predefinito di 5910

Ha funzionato per me. Anche se non ricorderò il 5910 in futuro.
Vesanto,

7
Sono stato in grado di modificare correttamente la voce in: [xrdp1]. . . port = ask5910 Questo porta per impostazione predefinita la porta su 5910, quindi non è necessario ricordarla come diceva Vesanto (non lo ricorderei nemmeno io, Vesanto!), ma ti dà anche la possibilità di cambiarla se vuoi generare una nuova sessione desktop su, diciamo porta 5911. L'ho provato su Ubuntu 16.04.
hoekma,

2
^ questa è anche la migliore soluzione che ho trovato.
Nacht - Ripristina Monica il

Su un Rpi3 appena avviato ho iniziato una nuova sessione con la porta -1 e poi sono arrivato con un altro computer e ho usato la porta 5910 - ha raccolto la stessa sessione. Quando sposti le cose su un computer, puoi vederle accadere sull'altro.
SDsolar,

Se lo fai di nuovo, ma assegnagli un numero di porta di -1 ti darà una nuova sessione.
SDsolar,

7

Odio essere il ragazzo che lascia cadere un link, ma ho seguito la guida qui e ha funzionato davvero bene. Ora posso accedere a una sessione RDP da host Linux e Windows e riconnettermi alla mia vecchia sessione se ho effettuato l'accesso prima. Questa è la migliore guida per l'installazione che ho trovato. Sfortunatamente, l'installazione del pacchetto standard causa molti più problemi che farlo dal sorgente.

L'autore di quel link ha anche creato uno strumento automatico per installarlo e configurarlo, ma non l'ho provato, quindi fai attenzione.

Spero che ciò ti aiuti.


Grazie per aver fornito il link. Ciò implica che non esiste un pacchetto deb funzionante per xrdp?
gennaio

Ne ho visto uno qualche tempo fa, ma non ha funzionato correttamente con le versioni più recenti di Ubuntu. Per quanto ne so, non esiste un pacchetto .deb funzionante per XRDP su versioni di Ubuntu post 10.04. Felice di essere smentito, ovviamente, poiché questo metodo è deludentemente irritante.
agc93,

controlla la mia soluzione che è super automatica sullo script per Ubuntu 12 a 64 bithttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855

Penso che ciò che abbia senso per questa domanda sia creare il tuo .xsessionfile nella tua home directory. Ad esempio, se usi gnome-desktop, eseguiecho gnome-session >> ~/.xsession
artificerpi il

4

Il problema è che xrdp non si connette sempre alla stessa porta. In caso contrario e hai dimenticato il numero di porta, puoi accedere a una sessione ssh e scoprire il numero da

netstat -tulpn | grep vnc

e otterrai qualcosa di simile al seguente

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

e poi sai che 5911 era la porta a cui ti sei connesso.


2

nella schermata di accesso con la casella xrdp quando ti connetti per la prima volta al desktop remoto dovrebbe esserci una casella a discesa, da qui scegli "vnc-any" quindi inserisci l'indirizzo IP del computer e la password ma lascia la porta in quale è, questo dovrebbe aiutare :)


Sembra il più semplice e funziona per me. Grande. Nessuna installazione complicata, compilazione ecc.
josef


1

1. Modifica xrdp.ini:

sudo vi /etc/xrdp/xrdp.ini

2. Modifica l'impostazione della porta port=ask-1nella regola di connessione:

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

3.Riavvia il tuo servizio xrdp

sudo service xrdp restart

Dovresti vedere la seguente immagine quando accedi dal desktop remoto. inserisci qui la descrizione dell'immagine

1. Al primo accesso è possibile visualizzare questo numero di porta. Esempio: 5912: inserisci qui la descrizione dell'immagine

Se si dimentica questo numero di porta, è possibile utilizzare il comando seguente per verificare:

netstat -peant | grep 59 | grep Xvnc

2. È possibile riconnettere l'ultima sessione tramite il numero di porta. inserisci qui la descrizione dell'immagine


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


0

Ho riscontrato questo problema su una macchina Debian. Utilizzato X11RDP-o-Matic per creare pacchetti xrdp 0.7. Prima dell'aggiornamento a systemd, la riconnessione della sessione xrdp ha funzionato correttamente.

Osservando l'albero dei processi, ho visto che le sessioni non erano più figli di xrdp-sesman. Si è rivelato essere un problema di autorizzazioni durante l'utilizzo di systemd. Google ha trovato una patch che risolve il problema.

Come si identifica una riconnessione funzionante? Esegui ps axfe guarda l'albero dei processi per xrdp-sesman. X11rdp, xrdp-chansrv, xrdp-sessvcdovrebbe funzionare da bambino. In caso contrario, xrdp-sesmannon sapranno come riconnettersi alla sessione.

Ecco come appare quando si lavora:

buon processo di sessione xrdp


0

Ecco cosa ho fatto. Assicurati che tigervnc-server sia installato in modo da poter usare Xvnc. Avvia una sessione VNC con la configurazione predefinita (in realtà ho seguito la guida all'installazione di Arch Linux per TigerVNC). Quindi configura il tuo Xrdp per usare quella sessione VNC ogni volta. Inoltre, imposta TigerVNC all'avvio all'avvio o altro. Questa è l'unica sezione VNC nel mio file 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

-1

Questo thread di UbuntuForum sembra utile - non l'ho testato io stesso - tuttavia ho copiato la soluzione fornita qui per completare questa risposta.

Configurazione di RealVNC

1. Disinstallazione del server Ubuntu VNC predefinito (Vino):

Vai a: Sistema -> Amministrazione -> Gestore pacchetti Synaptic Cerca il pacchetto "Vino", Contrassegna per rimozione, Applica.

2. Installazione di TightVNC e XRDP:

Mentre si utilizza Synaptic Package Manager, seacrh per il pacchetto "tightvnc" (fare attenzione, non " xtightvnc ") e Mark For Installation. Allo stesso modo, cercare il pacchetto "xrdp" e selezionare anche per l'installazione. Applicare. PS: se vuoi, puoi scartare qualsiasi altro pacchetto "vnc" che non ti serve!

3. Configurazione di XRDP (opzionale)

Apri un terminale e digita i tre comandi seguenti:

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

Rimuovere le sezioni Xrdp2-Xrdp6, lasciare solo la sezione Xrdp1. Il tuo xrdp.ini dovrebbe apparire così:

[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. Connessione

Riavvia il sistema e sei pronto per connetterti!

Per connetterti da un'altra macchina Ubuntu, usa: Applicazioni -> Internet -> Client Terminal Server, digita l'IP della tua macchina Ubuntu VNC, usa RDPv5 o RDP, fai clic su Connetti!

Per connettersi da un computer basato su Windows, utilizzare: Start -> Esegui -> mstsc, digitare l'IP del computer Ubuntu VNC, fare clic su Connetti.

Una volta connesso, usa le credenziali del tuo account utente Ubuntu (u / n e p / w) e accedi in remoto al desktop.


L'hai provato? Sembra che tu abbia appena copiato e incollato il link alla lettera. Se si copia e incolla, si prega di riconoscere la fonte nella risposta.
Fossfreedom

@fossfreedom no, non ho provato ma ho cercato di aiutare. A proposito ho già menzionato la fonte in this may help you.
Rahul Virpara,

Forse dovresti essere più esplicito rispetto alla tua fonte e alla veridicità della risposta. Vedi la mia modifica.
Fossfreedom
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.