VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
В บทความก่อนหน้านี้ เราได้พูดคุยถึงการใช้งานเซิร์ฟเวอร์ VNC บนเครื่องเสมือนทุกประเภท ตัวเลือกนี้มีข้อเสียมากมายข้อสำคัญประการหนึ่งคือข้อกำหนดสูงสำหรับปริมาณงานของช่องทางการส่งข้อมูล วันนี้เราจะพยายามเชื่อมต่อกับเดสก์ท็อปแบบกราฟิกบน Linux ผ่าน RDP (Remote Desktop Protocol) ระบบ VNC ขึ้นอยู่กับการส่งอาร์เรย์ของพิกเซลโดยใช้โปรโตคอล RFB (Remote Framebuffer) และ RDP ช่วยให้คุณสามารถส่งกราฟิกดั้งเดิมที่ซับซ้อนยิ่งขึ้นและคำสั่งระดับสูงได้ โดยทั่วไปจะใช้เพื่อโฮสต์บริการเดสก์ท็อประยะไกลบน Windows แต่เซิร์ฟเวอร์สำหรับ Linux ก็มีให้บริการเช่นกัน

คำศัพท์:

การติดตั้งสภาพแวดล้อมแบบกราฟิก
Russification ของการติดตั้งเซิร์ฟเวอร์และซอฟต์แวร์
การติดตั้งและกำหนดค่าเซิร์ฟเวอร์ RDP
การตั้งค่าไฟร์วอลล์
กำลังเชื่อมต่อกับเซิร์ฟเวอร์ RDP
ตัวจัดการเซสชันและเซสชันผู้ใช้
การสลับรูปแบบแป้นพิมพ์

การติดตั้งสภาพแวดล้อมแบบกราฟิก

เราจะใช้เครื่องเสมือนกับ Ubuntu Server 18.04 LTS พร้อมคอร์ประมวลผลสองคอร์, RAM สี่กิกะไบต์และฮาร์ดไดรฟ์ (HDD) ยี่สิบกิกะไบต์ การกำหนดค่าที่อ่อนแอกว่านั้นไม่เหมาะกับเดสก์ท็อปแบบกราฟิก แม้ว่าจะขึ้นอยู่กับงานที่ได้รับการแก้ไขก็ตาม อย่าลืมใช้รหัสโปรโมชั่น Habrahabr10 เพื่อรับส่วนลด 10% สำหรับการสั่งซื้อของคุณ

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
การติดตั้งสภาพแวดล้อมเดสก์ท็อปที่มีการขึ้นต่อกันทั้งหมดทำได้ด้วยคำสั่งต่อไปนี้:

sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

เช่นเดียวกับในกรณีก่อนหน้านี้ เราเลือก XFCE เนื่องจากมีความต้องการทรัพยากรการประมวลผลค่อนข้างต่ำ

Russification ของการติดตั้งเซิร์ฟเวอร์และซอฟต์แวร์

บ่อยครั้งที่เครื่องเสมือนถูกปรับใช้เฉพาะกับการแปลเป็นภาษาอังกฤษเท่านั้น บนเดสก์ท็อปคุณอาจต้องใช้ภาษารัสเซียซึ่งติดตั้งง่าย ขั้นแรก มาติดตั้งคำแปลสำหรับโปรแกรมระบบกันก่อน:

sudo apt-get install language-pack-ru

มาตั้งค่าการแปล:

sudo update-locale LANG=ru_RU.UTF-8

เอฟเฟกต์เดียวกันนี้สามารถทำได้โดยการแก้ไข /etc/default/locale ด้วยตนเอง

สำหรับการแปล GNOME และ KDE เป็นภาษาท้องถิ่น พื้นที่เก็บข้อมูลจะมีแพ็คเกจ language-pack-gnome-ru และ language-pack-kde-ru คุณจะต้องใช้แพ็คเกจเหล่านี้หากคุณใช้โปรแกรมจากสภาพแวดล้อมเดสก์ท็อปเหล่านี้ ใน XFCE มีการติดตั้งการแปลพร้อมกับแอปพลิเคชัน ถัดไปคุณสามารถติดตั้งพจนานุกรม:

# Словари для проверки орфографии
sudo apt-get install hunspell hunspell-ru

# Тезаурус для LibreOffice
sudo apt-get install mythes-ru

# Англо-русский словарь в формате DICT
sudo apt-get install mueller7-dict

นอกจากนี้ อาจจำเป็นต้องมีการติดตั้งการแปลสำหรับบางโปรแกรม:

# Браузер Firefox
sudo apt-get install firefox firefox-locale-ru

# Почтовый клиент Thunderbird
sudo apt-get install thunderbird thunderbird-locale-ru

# Офисный пакет LibreOffice
sudo apt-get install libreoffice libreoffice-l10n-ru libreoffice-help-ru

การเตรียมสภาพแวดล้อมเดสก์ท็อปเสร็จสิ้น เหลือเพียงการกำหนดค่าเซิร์ฟเวอร์ RDP

การติดตั้งและกำหนดค่าเซิร์ฟเวอร์ RDP

ที่เก็บ Ubuntu มีเซิร์ฟเวอร์ Xrdp ที่แจกจ่ายอย่างอิสระ ซึ่งเราจะใช้:

sudo apt-get install xrdp

หากทุกอย่างเป็นไปด้วยดี เซิร์ฟเวอร์ควรเริ่มทำงานโดยอัตโนมัติ:

sudo systemctl status xrdp

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
เซิร์ฟเวอร์ Xrdp ทำงานด้วยสิทธิ์ผู้ใช้ xrdp และตามค่าเริ่มต้นจะใช้ใบรับรอง /etc/ssl/private/ssl-cert-snakeoil.key ซึ่งสามารถแทนที่ด้วยใบรับรองของคุณเองได้ หากต้องการเข้าถึงเพื่ออ่านไฟล์ คุณต้องเพิ่มผู้ใช้ในกลุ่ม ssl-cert:

sudo adduser xrdp ssl-cert

การตั้งค่าเริ่มต้นสามารถพบได้ในไฟล์ /etc/default/xrdp และไฟล์การกำหนดค่าเซิร์ฟเวอร์อื่นๆ ทั้งหมดจะอยู่ในไดเร็กทอรี /etc/xrdp พารามิเตอร์หลักอยู่ในไฟล์ xrdp.ini ซึ่งไม่จำเป็นต้องเปลี่ยนแปลง การกำหนดค่าได้รับการบันทึกไว้เป็นอย่างดี และ manpages ที่เกี่ยวข้องจะรวมอยู่ด้วย:

man xrdp.ini
man xrdp

สิ่งที่เหลืออยู่คือการแก้ไขสคริปต์ /etc/xrdp/startwm.sh ซึ่งจะดำเนินการเมื่อมีการเตรียมใช้งานเซสชันผู้ใช้ ขั้นแรก เรามาสร้างสำเนาสำรองของสคริปต์จากการแจกจ่าย:

sudo mv /etc/xrdp/startwm.sh /etc/xrdp/startwm.b
sudo nano /etc/xrdp/startwm.sh

หากต้องการเริ่มต้นสภาพแวดล้อมเดสก์ท็อป XFCE คุณจะต้องมีสคริปต์ดังนี้:

#!/bin/sh
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG LANGUAGE
fi
exec /usr/bin/startxfce4

โปรดทราบ: ในสคริปต์ควรเขียนเส้นทางแบบเต็มไปยังไฟล์ปฏิบัติการจะดีกว่า - นี่เป็นนิสัยที่ดี มาทำให้สคริปต์ทำงานได้และ ณ จุดนี้การตั้งค่าเซิร์ฟเวอร์ Xrdp ก็ถือว่าเสร็จสมบูรณ์แล้ว:

sudo chmod 755 /etc/xrdp/startwm.sh

รีสตาร์ทเซิร์ฟเวอร์:

sudo systemctl restart xrdp

การตั้งค่าไฟร์วอลล์

ตามค่าเริ่มต้น Xrdp จะรับฟังพอร์ต TCP 3389 บนอินเทอร์เฟซทั้งหมด ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์เสมือน คุณอาจต้องกำหนดค่าไฟร์วอลล์ Netfilter บน Linux โดยปกติจะทำโดยใช้ยูทิลิตี้ iptables แต่บน Ubuntu ควรใช้ ufw จะดีกว่า หากทราบที่อยู่ IP ของลูกค้า การกำหนดค่าจะดำเนินการโดยใช้คำสั่งต่อไปนี้:

sudo ufw allow from IP_Address to any port 3389

คุณสามารถอนุญาตการเชื่อมต่อจาก IP ใดก็ได้ดังนี้:

sudo ufw allow 3389

RDP รองรับการเข้ารหัส แต่การเปิดเผยเซิร์ฟเวอร์ Xrdp ไปยังเครือข่ายสาธารณะถือเป็นความคิดที่ไม่ดี หากไคลเอนต์ไม่มี IP คงที่ เซิร์ฟเวอร์ควรฟัง localhost เท่านั้นเพื่อเพิ่มความปลอดภัย วิธีที่ดีที่สุดคือเข้าถึงผ่านอุโมงค์ SSH ซึ่งจะเปลี่ยนเส้นทางการรับส่งข้อมูลจากคอมพิวเตอร์ไคลเอนต์อย่างปลอดภัย เรามีแนวทางที่คล้ายกัน ใช้ในบทความที่แล้ว สำหรับเซิร์ฟเวอร์ VNC

กำลังเชื่อมต่อกับเซิร์ฟเวอร์ RDP

หากต้องการทำงานกับสภาพแวดล้อมเดสก์ท็อป จะเป็นการดีกว่าถ้าสร้างผู้ใช้ที่ไม่มีสิทธิพิเศษแยกต่างหาก:

sudo adduser rdpuser

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
มาเพิ่มผู้ใช้ในกลุ่ม sudo เพื่อให้เขาสามารถทำงานที่เกี่ยวข้องกับการบริหารได้ หากไม่มีความจำเป็นดังกล่าว คุณสามารถข้ามขั้นตอนนี้ได้:

sudo gpasswd -a rdpuser sudo

คุณสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ไคลเอนต์ RDP ใดก็ได้ รวมถึงไคลเอนต์ Windows Remote Desktop Services ในตัว หาก Xrdp กำลังฟังอินเทอร์เฟซภายนอก ก็ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม การระบุที่อยู่ IP ชื่อผู้ใช้และรหัสผ่านของ VPS ในการตั้งค่าการเชื่อมต่อก็เพียงพอแล้ว หลังจากเชื่อมต่อแล้วเราจะเห็นสิ่งนี้:

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
หลังจากการตั้งค่าสภาพแวดล้อมเดสก์ท็อปครั้งแรก เราจะได้เดสก์ท็อปที่มีคุณสมบัติครบถ้วน อย่างที่คุณเห็นมันไม่ใช้ทรัพยากรมากนัก แม้ว่าทุกอย่างจะขึ้นอยู่กับแอปพลิเคชันที่ใช้ก็ตาม

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
หากเซิร์ฟเวอร์ Xrdp ฟังเฉพาะ localhost เท่านั้น การรับส่งข้อมูลบนคอมพิวเตอร์ไคลเอนต์จะต้องถูกรวมไว้ในอุโมงค์ SSH (sshd ต้องทำงานบน VPS) บน Windows คุณสามารถใช้ไคลเอนต์ SSH แบบกราฟิก (เช่น PuTTY) และบนระบบ UNIX คุณต้องใช้ยูทิลิตี้ ssh:

ssh -L 3389:127.0.0.1:3389 -C -N -l rdpuser RDP_server_ip

หลังจากที่ช่องสัญญาณเริ่มต้นแล้ว ไคลเอ็นต์ RDP จะไม่เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลอีกต่อไป แต่จะเชื่อมต่อกับโฮสต์ภายในเครื่อง

อุปกรณ์เคลื่อนที่ทำได้ยากขึ้น: จะต้องซื้อไคลเอนต์ SSH ที่สามารถสร้างอุโมงค์ได้ และใน iOS และ iPadOS การทำงานเบื้องหลังของแอปพลิเคชันบุคคลที่สามนั้นทำได้ยากเนื่องจากการเพิ่มประสิทธิภาพการใช้พลังงานที่ดีเกินไป บน iPhone และ iPad คุณจะไม่สามารถสร้างอุโมงค์ในแอปพลิเคชันแยกต่างหากได้ คุณจะต้องมีแอปพลิเคชันเครื่องเก็บเกี่ยวที่สามารถสร้างการเชื่อมต่อ RDP ผ่าน SSH ได้เอง เช่น, ตัวอย่างเช่น รีโมทโปร.

ตัวจัดการเซสชันและเซสชันผู้ใช้

ความสามารถในการทำงานแบบผู้ใช้หลายคนถูกนำมาใช้โดยตรงในเซิร์ฟเวอร์ Xrdp และไม่ต้องการการกำหนดค่าเพิ่มเติม หลังจากเริ่มบริการผ่าน systemd กระบวนการหนึ่งจะทำงานในโหมด daemon ฟังบนพอร์ต 3389 และสื่อสารผ่าน localhost กับตัวจัดการเซสชัน

ps aux |grep xrdp

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04

sudo netstat -ap |grep xrdp

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
โดยปกติแล้วตัวจัดการเซสชันจะไม่ปรากฏแก่ผู้ใช้เนื่องจากการเข้าสู่ระบบและรหัสผ่านที่ระบุในการตั้งค่าไคลเอนต์จะถูกถ่ายโอนโดยอัตโนมัติ หากไม่เกิดขึ้นหรือมีข้อผิดพลาดระหว่างการรับรองความถูกต้อง หน้าต่างเข้าสู่ระบบแบบโต้ตอบจะปรากฏขึ้นแทนเดสก์ท็อป

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04
การเรียกใช้ตัวจัดการเซสชันอัตโนมัติระบุไว้ในไฟล์ /etc/default/xrdp และการกำหนดค่าถูกเก็บไว้ใน /etc/xrdp/sesman.ini โดยค่าเริ่มต้นจะมีลักษณะดังนี้:

[Globals]
ListenAddress=127.0.0.1
ListenPort=3350
EnableUserWindowManager=true
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh

[Security]
AllowRootLogin=true
MaxLoginRetry=4
TerminalServerUsers=tsusers
TerminalServerAdmins=tsadmins
; When AlwaysGroupCheck=false access will be permitted
; if the group TerminalServerUsers is not defined.
AlwaysGroupCheck=false

[Sessions]

คุณไม่จำเป็นต้องเปลี่ยนแปลงอะไรที่นี่ คุณเพียงแค่ต้องปิดการใช้งานการเข้าสู่ระบบด้วยสิทธิ์รูท (AllowRootLogin=false) สำหรับผู้ใช้แต่ละรายที่ได้รับอนุญาตในระบบ กระบวนการ xrdp แยกต่างหากจะถูกเปิดใช้งาน: หากคุณยกเลิกการเชื่อมต่อโดยไม่สิ้นสุดเซสชัน กระบวนการผู้ใช้จะยังคงทำงานต่อไปตามค่าเริ่มต้น และคุณสามารถเชื่อมต่อกับเซสชันได้อีกครั้ง การตั้งค่าสามารถเปลี่ยนแปลงได้ในไฟล์ /etc/xrdp/sesman.ini (ส่วน [เซสชัน])

การสลับรูปแบบแป้นพิมพ์

โดยปกติจะไม่มีปัญหากับคลิปบอร์ดแบบสองทาง แต่ด้วยรูปแบบแป้นพิมพ์ภาษารัสเซียคุณจะต้องเล่นเล็กน้อย (ภาษารัสเซียควรจะเป็นอยู่แล้ว การติดตั้ง). มาแก้ไขการตั้งค่าแป้นพิมพ์ของเซิร์ฟเวอร์ Xrdp:

sudo nano /etc/xrdp/xrdp_keyboard.ini

คุณต้องเพิ่มบรรทัดต่อไปนี้ที่ส่วนท้ายของไฟล์การกำหนดค่า:

[rdp_keyboard_ru]
keyboard_type=4
keyboard_type=7
keyboard_subtype=1
model=pc105
options=grp:alt_shift_toggle
rdp_layouts=default_rdp_layouts
layouts_map=layouts_map_ru

[layouts_map_ru]
rdp_layout_us=us,ru
rdp_layout_ru=us,ru

สิ่งที่เหลืออยู่คือบันทึกไฟล์และรีสตาร์ท Xrdp:

sudo systemctl restart xrdp

อย่างที่คุณเห็น การตั้งค่าเซิร์ฟเวอร์ RDP บน Linux VPS นั้นไม่ใช่เรื่องยาก บทความก่อนหน้านี้ เราได้หารือเกี่ยวกับการตั้งค่า VNC แล้ว นอกจากเทคโนโลยีเหล่านี้แล้ว ยังมีอีกตัวเลือกที่น่าสนใจ: ระบบ X3Go ที่ใช้โปรโตคอล NX 2 ที่ดัดแปลง เราจะจัดการกับมันในสิ่งพิมพ์ถัดไป

VPS บน Linux พร้อมอินเทอร์เฟซแบบกราฟิก: เปิดตัวเซิร์ฟเวอร์ RDP บน Ubuntu 18.04

ที่มา: will.com

เพิ่มความคิดเห็น