ฉันจะตั้งค่าเซสชัน xrdp ที่นำเซสชันที่มีอยู่กลับมาใช้ใหม่ได้อย่างไร


57

ฉันพยายามตั้งค่าเทอร์มินัลเซิร์ฟเวอร์ RDP อย่างแม่นยำโดยใช้ xrdp และประสบปัญหาอย่างมากในการตั้งค่าการทำงาน เมื่อผู้ใช้เข้าสู่ระบบฉันจำเป็นต้องเชื่อมต่อกับผู้ใช้ที่มีอยู่เซสชันถ้ามันมีอยู่มิฉะนั้นเริ่มเซสชันใหม่และเซสชันใด ๆ ที่เริ่มต้นต้องเริ่ม LXDE ฉันต้องทำการเปลี่ยนแปลงใดกับการกำหนดค่าเริ่มต้นเพื่อให้สามารถใช้งานได้


ในการกำหนดค่า XRDP ของฉัน (ยกเว้นฉันกำลังเรียกใช้ Unity ในเซสชันเดสก์ท็อปและ Unity2D สำหรับเซสชันระยะไกล) การเข้าสู่ระบบในฐานะผู้ใช้จะเลือกเซสชันเก่าโดยอัตโนมัติ ผู้ใช้แต่ละคนได้รับเซสชันใหม่ทุกครั้งที่พวกเขาเชื่อมต่อหรือไม่
agc93

ที่ดีที่สุดของคำอธิบาย / วิธีการแก้ปัญหาที่ฉันได้พบบนอินเทอร์เน็ตสามารถพบได้ที่สถานที่แห่งนี้c-nergy.be/blog/?p=2879ให้มันลองฉันหวังว่าข้อมูลความช่วยเหลือนี้
gyest

คำตอบ:


46

ฉันมีปัญหาเดียวกันนี้และฉันเพิ่งพบทางออกที่ง่าย ตอนแรกฉันเพิ่งติดตั้ง 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

Thats มันฉันคิดว่าคุณสามารถรับไปเพียงเปลี่ยนไปport=-1 port=5912xrdp ของฉันเชื่อมต่อกับเซสชันที่มีอยู่เสมอโดยใช้พอร์ตเดียวกันเสมอ


2
โซลูชันนี้ใช้งานได้ดีสำหรับฉัน แต่ฉันควรชี้ให้เห็นว่าทุกคนที่เชื่อมต่อกับเครื่องเดียวกันจะได้รับเซสชันเดียวกันแม้ว่าบุคคลอื่นจะเข้าสู่ระบบภายใต้เซสชันนั้น
VeeTheSecond

7
ใช้งานได้ก็ต่อเมื่อมีเซสชันที่มีอยู่แล้ว เป็นครั้งแรกในมีเซสชั่นจึงไม่ล้มเหลวในการเชื่อมต่อกับพอร์ต 5912.
STU

4
มีปัญหาเดียวกัน .. ดูเหมือนว่าโดยค่าเริ่มต้นมันพยายามที่จะเปิดการเชื่อมต่อโดยใช้ 5911port (คุณสามารถสังเกตเห็นได้เมื่อ xrpd กำลังเชื่อมต่อ) ดังนั้นฉันเปลี่ยนจากพอร์ต = -1 เป็นพอร์ต = ask5911 วิธีนี้ใช้ 5911 เป็นค่าเริ่มต้น แต่คุณสามารถเปลี่ยนพอร์ตนั้นเมื่อคุณป้อนผู้ใช้ / รหัสผ่านในขณะที่เชื่อมต่อ (ดังนั้นจึงไม่จำเป็นต้องกำหนดค่าใหม่ในกรณีที่เกิดข้อผิดพลาด .. )
Max

1
พฤติกรรมนี้ขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์ vnc อย่างเคร่งครัด ภายใต้ centos ฉันใช้ tigervnc ซึ่งจะเชื่อมต่อกับเซสชันที่มีอยู่หรือสร้างการตั้งค่าพอร์ต = -1 อย่างไรก็ตามภายใต้ ubuntu ค่าเริ่มต้นคือ tightvncserver ซึ่งไม่มีลักษณะการทำงานเดียวกัน เพียงแค่เล่นกับการใช้งาน vnc ถ้ามีอะไร
Denys S.

1
พอร์ตเริ่มต้นคือ 5910 ดูaskubuntu.com/a/527975/592751
Pedi T.

16

ฉันต้องการปรับปรุงคำตอบที่มีอยู่ คำตอบที่ได้รับการโหวตสูงสุดคือการแก้ไขxrdp.iniไฟล์เพื่อเปลี่ยนพอร์ตเป็นค่าคงที่แทนที่-1ไวด์การ์ดเพื่อค้นหาพอร์ตที่เปิดอยู่

ฉันลองมัน แต่มีข้อผิดพลาดในการเชื่อมต่อในครั้งแรกดังนั้นจึงเปลี่ยนกลับเป็น-1ค่า แห้วตั้งอย่างรวดเร็วแม้ว่าจะมีปัญหาที่เหลือจากการไม่กลับมาทำงานต่อดังนั้นฉันจึงดูไฟล์ ini อีกครั้ง

สิ่งที่ได้ผลสำหรับฉันและเป็นสิ่งที่ฉันอยากรู้จริงๆคือ:

แก้ไข /etc/xrdp/xrdp.ini

ภายใต้[xrdp1]ที่port=-1ฉันสังเกตเห็นชื่อผู้ใช้และรหัสผ่านถูกตั้งค่าเป็น ASK หากคุณตั้งค่าport=askคุณจะได้รับตัวเลือกที่พร้อมท์การเข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่านเพื่อเลือกพอร์ต

แทนที่จะติดตั้งแพ็กเกจเพิ่มเติมฉันพบวิธีแก้ไขที่ง่ายที่สุดที่จะตั้งค่าตัวเลือกถามเชื่อมต่อเซสชันแรก (ถ้าฉันยังไม่ได้รัน) บนพอร์ต -1 ที่ล็อกอินด้วยชื่อผู้ใช้และรหัสผ่าน
หลังจากตัดการเชื่อมต่อเซสชันเพื่อดำเนินการเซสชันที่มีอยู่แล้วต่อให้เข้าสู่พอร์ตเริ่มต้น: 5910 และคุณจะกลับสู่เซสชันที่มีอยู่ของคุณจนกว่าคุณจะรีสตาร์ทคอมพิวเตอร์ระยะไกลหรือสิ้นสุดเซสชันเมื่อออกจากระบบ

เพื่อสรุป:

  • แก้ไขxrdp.iniไฟล์
  • ชุด port = ask
  • เชื่อมต่อจากเครื่องระยะไกลและเมื่อเข้าสู่ระบบหากคุณไม่มีเซสชันที่มีอยู่ให้ระบุพอร์ต -1
  • เพื่อเริ่มเซสชันต่อให้ป้อนค่าเริ่มต้นของ 5910

ทำงานให้ฉัน แม้ว่าฉันจะไม่จำ 5910 ก้าวไปข้างหน้า
Vesanto

7
ฉันสามารถเปลี่ยนรายการเป็น: [xrdp1] ได้สำเร็จ . . port = ask5910 ค่าเริ่มต้นนี้เป็นพอร์ตที่ 5910 ดังนั้นคุณไม่จำเป็นต้องจำมันเหมือน Vesanto พูด (ฉันจะไม่จำได้เช่นกัน Vesanto!) แต่ยังให้คุณเลือกที่จะเปลี่ยนถ้าคุณต้องการที่จะเกิดเซสชันเดสก์ท็อปใหม่ บนพูดพอร์ต 5911 ฉันทดสอบสิ่งนี้บน Ubuntu 16.04
hoekma

2
^ นั่นเป็นทางออกที่ดีที่สุดที่ฉันได้พบเช่นกัน
Nacht - Reinstate Monica

ใน Rpi3 ที่เพิ่งบู๊ตใหม่ฉันเริ่มเซสชันใหม่ด้วยพอร์ต -1 จากนั้นฉันก็ใช้คอมพิวเตอร์เครื่องอื่นและใช้พอร์ต 5910 - มันเลือกเซสชันเดียวกัน เมื่อคุณย้ายสิ่งต่าง ๆ บนคอมพิวเตอร์เครื่องหนึ่งคุณจะเห็นว่ามันเกิดขึ้นที่อีกคอมพิวเตอร์หนึ่ง
SDsolar

หากคุณทำมันอีกครั้ง แต่ให้หมายเลขพอร์ตเป็น -1 จะทำให้คุณมีเซสชันใหม่
SDsolar

7

ฉันเกลียดที่จะเป็นคนที่เพิ่งวางลิงค์ แต่ฉันทำตามคำแนะนำที่นี่และมันทำงานได้ดีจริงๆ ตอนนี้ฉันสามารถเข้าสู่เซสชัน RDP จากโฮสต์ Linux และ Windows และเชื่อมต่อฉันเข้ากับเซสชันเก่าอีกครั้งหากฉันเข้าสู่ระบบมาก่อน นี่คือคำแนะนำที่ดีที่สุดสำหรับการติดตั้งที่ฉันได้พบ น่าเสียดายที่การติดตั้งแพ็คเกจมาตรฐานทำให้เกิดปัญหามากกว่าการทำจากแหล่งที่มา

ผู้เขียนลิงก์นั้นได้สร้างเครื่องมืออัตโนมัติเพื่อติดตั้งและกำหนดค่า แต่ฉันยังไม่ได้ลองดังนั้นจึงควรระมัดระวัง

หวังว่าจะช่วยคุณออก


ขอบคุณที่ให้ลิงค์ สิ่งนี้บอกเป็นนัยหรือไม่ว่าไม่มีแพคเกจ deb ที่ใช้งานได้ออกมาสำหรับ xrdp หรือไม่
ม.ค.

ฉันเคยเห็นเมื่อไม่นานมานี้ แต่ไม่สามารถทำงานได้อย่างถูกต้องกับ Ubuntu รุ่นใหม่กว่า เท่าที่ฉันทราบไม่มีแพคเกจ. deb สำหรับ XRDP บน Ubuntu รุ่นที่โพสต์ 10.04 ยินดีที่ได้รับการพิสูจน์ว่าผิดแน่นอนเพราะวิธีนี้ทำให้เกิดการระคายเคืองอย่างน่าผิดหวัง
agc93

ตรวจสอบโซลูชันของฉันซึ่งเป็นซุปเปอร์อัตโนมัติในสคริปต์สำหรับ ubuntu 12 64 บิตhttp://askubuntu.com/questions/190838/how-to-install-x11rdp-on-ubuntu-12-04/190855#190855

ฉันคิดว่าสิ่งที่สมเหตุสมผลสำหรับคำถามนี้คือการสร้าง.xsessionไฟล์ของคุณเองในผบ. ตัวอย่างเช่นหากคุณใช้ gnome-desktop ให้รันecho gnome-session >> ~/.xsession
artificerpi

4

ปัญหาคือ xrdp ไม่ได้เชื่อมต่อกับพอร์ตเดียวกันทุกครั้ง ในกรณีที่มันไม่ได้และคุณลืมหมายเลขพอร์ตคุณสามารถเข้าสู่ระบบเซสชั่น ssh และหาหมายเลขโดย

netstat -tulpn | grep vnc

และคุณจะได้รับสิ่งต่อไปนี้

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

และจากนั้นคุณรู้ว่า 5911 เป็นพอร์ตที่คุณเชื่อมต่อ


2

ในหน้าจอเข้าสู่ระบบด้วยกล่อง xrdp เมื่อคุณเชื่อมต่อกับเดสก์ท็อประยะไกลเป็นครั้งแรกควรมีกล่องแบบหล่นลงจากที่นี่เลือก "vnc-any" จากนั้นป้อนที่อยู่ IP ของคอมพิวเตอร์และรหัสผ่าน มันคือสิ่งนี้จะช่วย :)


ดูเหมือนว่าง่ายที่สุดและเหมาะกับฉัน ยิ่งใหญ่ ไม่มีความซับซ้อนในการติดตั้งคอมไพล์และอื่น ๆ อีกต่อไป
josef

1

หากคุณพบปัญหา "รหัสผ่านล้มเหลว" คุณอาจดูสองประเด็นใน GitHub

เชื่อมต่อกับเซสชัน vnc เก่าอีกครั้ง - รหัสผ่าน VNC ล้มเหลว

รหัสผ่าน VNC ล้มเหลวเมื่อเลือกเซสชันที่มีอยู่

กล่าวโดยสรุปคือการระบุหมายเลขพอร์ตไม่สามารถใช้งานได้ในการออกแบบล่าสุด


1

1. Modifiy you 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

คุณควรเห็นภาพต่อไปนี้เมื่อคุณเข้าสู่ระบบโดยเดสก์ท็อประยะไกล ป้อนคำอธิบายรูปภาพที่นี่

1. ในการเข้าสู่ระบบครั้งแรกคุณจะเห็นหมายเลขพอร์ตนี้ ตัวอย่าง: 5912: ป้อนคำอธิบายรูปภาพที่นี่

หากคุณลืมหมายเลขพอร์ตนี้คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบ:

netstat -peant | grep 59 | grep Xvnc

2. คุณสามารถเชื่อมต่อเซสชันล่าสุดอีกครั้งด้วยหมายเลขพอร์ตของคุณ ป้อนคำอธิบายรูปภาพที่นี่


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


0

ฉันพบปัญหาในเครื่องเดเบียน ใช้X11RDP-o-Maticเพื่อสร้างแพ็คเกจ xrdp 0.7 ก่อนที่จะอัปเกรดเป็น systemd เซสชัน xrdp เชื่อมต่อใหม่ทำงานได้ดี

เมื่อมองไปที่แผนผังกระบวนการฉันจะเห็นว่าเซสชันนั้นไม่มีลูกxrdp-sesmanแล้ว กลายเป็นปัญหาสิทธิ์เมื่อใช้ systemd Google พบแพตช์ที่แก้ไขปัญหา

คุณระบุการเชื่อมต่อที่ใช้งานได้อย่างไร เรียกใช้และมองไปที่ต้นกระบวนการ ps axf ทุกคนควรจะทำงานเป็นเด็ก หากไม่ใช่พวกเขาจะไม่ทราบวิธีเชื่อมต่อเซสชันอีกครั้งxrdp-sesmanX11rdp, xrdp-chansrv, xrdp-sessvcxrdp-sesman

นี่คือสิ่งที่ดูเหมือนว่าเมื่อทำงาน:

กระบวนการเซสชั่น xrdp ที่ดี


0

นี่คือสิ่งที่ฉันทำ ตรวจสอบให้แน่ใจว่าติดตั้ง tigervnc-server เพื่อให้เราสามารถใช้ Xvnc เปิดตัวเซสชัน VNC ด้วยการกำหนดค่าเริ่มต้น (จริง ๆ แล้วฉันทำตามคำแนะนำในการติดตั้ง Arch Linux สำหรับ TigerVNC) จากนั้นกำหนดค่า Xrdp ของคุณเพื่อใช้เซสชัน VNC นั้นทุกครั้ง ให้ตั้ง TigerVNC เป็น startup เมื่อบูตเครื่อง นี่เป็นส่วน 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

-1

กระทู้ UbuntuForumนี้มีประโยชน์ - ฉันไม่ได้ทดสอบตัวเอง - แต่ฉันได้คัดลอกโซลูชันที่ให้ไว้ที่นี่เพื่อทำคำตอบนี้ให้สมบูรณ์

การตั้งค่า RealVNC

1. การถอนการติดตั้งเซิร์ฟเวอร์ VNC อูบุนตูเริ่มต้น (Vino):

ไปที่: ระบบ -> การดูแลระบบ -> Synaptic Package Manager ค้นหาแพ็คเกจ "Vino", ทำเครื่องหมายว่าต้องการลบ, ใช้งาน

2. การติดตั้ง TightVNC และ XRDP:

ขณะที่คุณใช้งาน Synaptic Package Manager ให้ทำการ seacrh สำหรับแพ็คเกจ "tightvnc" (ระวังไม่ใช่ " 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) และล็อกอินจากระยะไกลสู่เดสก์ท็อปของคุณ


คุณเคยทดสอบสิ่งนี้จริงเหรอ? ดูเหมือนว่าคุณเพิ่งคัดลอกและวางลิงก์คำต่อคำ หากคุณคัดลอกและวางโปรดรับทราบแหล่งที่มาในคำตอบของคุณ
fossfreedom

@fossfreedom ไม่ฉันยังไม่ได้ทดสอบ แต่พยายามช่วย BTW ฉันได้กล่าวถึงแหล่งที่มาthis may help youแล้ว
ราหุล Virpara

คุณอาจจะชัดเจนมากขึ้นแล้วแหล่งที่มาของคุณและความจริงของคำตอบ ดูการแก้ไขของฉัน
fossfreedom
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.