เซิร์ฟเวอร์ Linux ไม่มีหน้าจอ และส่วนใหญ่ก็ไม่จำเป็นต้องมี แต่บางครั้งก็จำเป็น เช่น เบราว์เซอร์ที่ต้องทำงานจากที่อยู่ของเซิร์ฟเวอร์เอง เครื่องมือที่มีแต่หน้าจอกราฟิก หรือเดสก์ท็อปที่เปิดทิ้งไว้แล้วกลับมาใช้ต่อจากคอมพิวเตอร์เครื่องไหนก็ได้ คู่มือนี้เพิ่มเดสก์ท็อปน้ำหนักเบา XFCE และ xrdp ให้ Ubuntu 24.04 เพื่อให้คุณเปิดได้ด้วยแอป Remote Desktop ตัวเดียวกับที่ใช้กับเซิร์ฟเวอร์ Windows
เราทดสอบทุกขั้นตอนบนอิมเมจ Ubuntu 24.04 ของเรา ค่าเริ่มต้นสองอย่างทำให้ครั้งแรกล้มเหลว และด้านล่างเราแก้ทั้งสองอย่าง คุณต้องมีผู้ใช้ทั่วไปที่มี sudo โดยคู่มือตั้งค่า Ubuntu จะสร้างให้ ในตัวอย่างผู้ใช้ชื่อ deploy
1. ติดตั้ง XFCE และ xrdp
sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp
บนเซิร์ฟเวอร์ 2 GB ของเรา ขั้นตอนนี้ใช้เวลาราวสี่นาทีครึ่งและกินดิสก์ 1.7 GB (ก่อนติดตั้งใช้ไป 2.7 GB หลังติดตั้ง 4.4 GB) จะได้ xrdp 0.9.24 ซึ่งเริ่มทำงานทันทีและรอรับที่พอร์ต 3389
2. ให้ xrdp เปิด XFCE ไม่ใช่ GNOME
ล็อกอินเป็นผู้ใช้ที่จะใช้เดสก์ท็อป แล้วรัน:
echo xfce4-session > ~/.xsession
ถ้าไม่มีไฟล์นี้ การล็อกอินครั้งแรกของเราเปิด GNOME แทน XFCE และเซสชันดับทันทีพร้อมข้อความ "Oh no! Something has gone wrong" แพ็กเกจในขั้นตอนที่ 1 ติดตั้งตัวจัดการเซสชันของ GNOME มาด้วย และ Ubuntu ตั้งให้เป็นค่าเริ่มต้น เมื่อมี ~/.xsession แล้ว xrdp จะเปิด XFCE
3. ให้ xrdp ใช้ TLS
xrdp ทำงานในนามผู้ใช้ของตัวเองชื่อ xrdp และผู้ใช้นี้อ่านกุญแจส่วนตัวของเซิร์ฟเวอร์ไม่ได้ การเชื่อมต่อครั้งแรกของเราใช้ได้ แต่ /var/log/xrdp.log แสดงให้เห็นว่าทำไมไม่ควรเชื่อใจมัน:
Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1
เมื่อไม่มีกุญแจ xrdp จะถอยกลับไปใช้การเข้ารหัส RDP แบบเก่าแทน TLS ให้สิทธิ์เข้าถึงแล้วรีสตาร์ต:
sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp
การเชื่อมต่อครั้งต่อไปในล็อกของเราแสดงเป็น TLS connection established ... TLSv1.3 คุณตรวจเซิร์ฟเวอร์ของคุณได้ด้วยวิธีเดียวกัน:
sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2
4. อย่าให้พอร์ต 3389 เปิดสู่อินเทอร์เน็ต
หลังติดตั้ง xrdp จะรอรับบนทุกที่อยู่ ต่างจาก Windows ตรงที่ xrdp ไม่มี Network Level Authentication ใครที่เข้าถึงพอร์ตได้ก็จะได้หน้าจอล็อกอินไว้เดารหัสผ่าน ให้มันรอรับบนตัวเซิร์ฟเวอร์เท่านั้น:
sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389
บรรทัดสุดท้ายควรแสดง 127.0.0.1:3389 ในการทดสอบของเรา หลังจากนั้นการเชื่อมต่อตรงไปยังที่อยู่ของเซิร์ฟเวอร์ที่พอร์ต 3389 ถูกปฏิเสธ ส่วน tunnel ในขั้นตอนถัดไปยังใช้ได้
5. เชื่อมต่อผ่าน SSH
เปิด tunnel บนคอมพิวเตอร์ของคุณ บน Windows ก็มีคำสั่ง ssh แบบเดียวกันใน PowerShell:
ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP
ในแพ็กเกจ NAT ให้เพิ่ม -p และพอร์ต SSH ส่วนตัวจากแดชบอร์ด เปิดหน้าต่างนั้นค้างไว้ จากนั้นตั้งแอป Remote Desktop ไปที่ localhost:13389 แล้วล็อกอินเป็น deploy ด้วยรหัสผ่านของผู้ใช้นั้น:
- Windows: Remote Desktop Connection (
mstsc) - macOS: Windows App จาก App Store
- Linux: Remmina หรือ
xfreerdp /v:localhost:13389 /u:deploy
พอร์ตฝั่งเครื่องเราใช้ 13389 ไม่ใช่ 3389 เพราะพอร์ต 3389 บนคอมพิวเตอร์ของคุณอาจถูก Remote Desktop ของเครื่องนั้นใช้อยู่แล้ว ครั้งแรกแอปจะเตือนเรื่องใบรับรองที่ไม่รู้จัก นั่นคือใบรับรองแบบเซ็นเองของเซิร์ฟเวอร์ และการเชื่อมต่อก็ถูกเข้ารหัสอยู่ภายใน SSH อยู่แล้ว
6. สิ่งที่คุณได้
คุณได้เดสก์ท็อป XFCE ที่มีแผงควบคุม ตัวจัดการไฟล์ และเทอร์มินัล บนเซิร์ฟเวอร์ของเรา หนึ่งเซสชันเพิ่ม RAM ราว 360 MB คือใช้ 388 MB ก่อนเชื่อมต่อ และ 747 MB ระหว่างเซสชัน
การปิดหน้าต่าง Remote Desktop ไม่ได้ทำให้ออกจากระบบ ในการทดสอบของเรา คำสั่งที่รันนานยังทำงานต่อหลังตัดการเชื่อมต่อ เมื่อเชื่อมต่อใหม่ xrdp พาเรากลับเข้าเซสชันเดิม (reconnected session ... display :10 ในล็อกของมัน) ถ้าต้องการจบเซสชันจริง ๆ ให้ใช้ Log Out ในเมนูของ XFCE
เลือกแพ็กเกจไหน
เดสก์ท็อปต้องการ RAM มากกว่า CPU Micro (2 vCPU, 2 GB, 25 GB, $5/เดือน) รัน XFCE และเครื่องมือเบา ๆ ได้สบาย ถ้าจะเปิดเว็บเบราว์เซอร์ค้างไว้ในเซสชัน ให้เลือก Small ที่มี 4 vCPU และ 4 GB ราคา $8/เดือน ทั้งสองเป็นแพ็กเกจ NAT และไม่เป็นปัญหาตรงนี้ เพราะ Remote Desktop วิ่งผ่านพอร์ต SSH ของคุณ
ถ้าสิ่งที่คุณต้องการจริง ๆ คือซอฟต์แวร์ Windows Windows VPS รันได้โดยตรง และ Windows-Small เริ่มต้นที่ $11/เดือน Ubuntu 24.04 อยู่ในหน้า Ubuntu VPS และเลือกได้ในทุกแพ็กเกจ Linux ที่ VPS ชำระเงินด้วย USDT, USDC หรือ ETH บนเครือข่าย Base, Ethereum หรือ Polygon
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ