การเข้าถึงคอมพิวเตอร์ผ่าน remote desktop เป็นส่วนสำคัญของชีวิตงาน Remote desktop programs ให้คุณเข้าถึงและควบคุมระบบอื่นๆ ที่ไม่ได้อยู่ในความเข้าถึงทางกายภาพ งานจากบ้าน (Work from home) ทำให้ remote computing สำคัญขึ้นอีก โดยอนุญาตให้คนจากภูมิภาคไกลทำงาน remote ด้วยคอมพิวเตอร์ของพวกเขา
คู่มือนี้แสดงวิธีติดตั้ง Virtual Network Computing (VNC) Server บน Ubuntu 20.04 LTS เพื่อให้ remote computing ทำได้บนระบบของคุณ
VNC Server คืออะไร?
แบบดั้งเดิม คอมพิวเตอร์ Linux เข้าถึงระบบอื่นผ่านเทอร์มินัลใช้ยูทิลิตี้อย่าง Secure Shell (SSH) แต่ความท้าทายกับ command line interface คือคุณไม่สามารถโต้ตอบกับ PC อื่นผ่าน GUI ได้ นี่คือที่ที่ VNC connection ช่วยได้
Virtual Network Computing Server หรือ VNC server เป็นระบบที่ให้คุณเข้าถึงและโต้ตอบกับ PC อื่นผ่านเครือข่ายโดยใช้ graphical interface แอปพลิเคชัน VNC มากมาย เช่น TightVNC, TigerVNC, RealVNC ในคู่มือนี้เราจะใช้เซิร์ฟเวอร์ x11vnc สำหรับตั้งค่า remote computing บนระบบ Ubuntu
X11vnc เป็น VNC server แบบเบา ที่ไม่สร้าง display เพิ่มสำหรับ remote desktop แทนที่จะแสดง x11 display ที่มีอยู่ (KDE, GNOME, Xfce ฯลฯ) ของระบบ Linux แบบ real-time ข้อได้เปรียบอีกอย่างของ x11vnc คือคุณใช้ VNC client หรือ viewer ใดก็ได้เพื่อเชื่อมต่อ
x11vnc server มี SSL/TLS encryption ในตัว และ 2048 bit RSA authentication รวมถึง VeNCrypt support พร้อมระบบล็อกอิน UNIX account และ password
ติดตั้ง Display Manager ที่เข้ากันได้
Ubuntu Linux ใช้ GNOME Desktop Manager (GDM) เป็น display manager ค่าเริ่มต้น รุ่นใหม่ใช้ gdm3 น่าเสียดาย GDM ไม่ทำงานดีมากกับ x11vnc server เพื่อแก้ไข ต้องติดตั้ง Light Display Manager หรือ lightdm
เปิดเทอร์มินัลด้วย Ctrl + Alt + T อัปเดต software sources ด้วย apt ก่อน
sudo apt update
จากนั้นติดตั้ง lightdm:
sudo apt install lightdm
หน้าจอต่อไปนี้จะปรากฏระหว่างติดตั้ง กด Enter เพื่อดำเนินต่อ
ถัดไป เลือกตัวเลือก lightdm และกด Enter
รีบูท PC เพื่อให้การเปลี่ยนแปลง display manager 有效
sudo reboot
คุณจะสังเกตเห็นการเปลี่ยนแปลงเล็กน้อยที่หน้าจอล็อกอินหลัง reboot เนื่องจากตอนนี้คุณใช้ lightdm เป็น display manager
ติดตั้ง x11vnc Server บน Ubuntu
ติดตั้ง x11nvc server เปิดเทอร์มินัลระบบด้วย Ctrl + Alt + T รันคำสั่ง:
sudo apt install x11vnc
กำหนดค่า x11vnc Server
ตอนนี้คุณจะกำหนดค่าบริการสำหรับเริ่ม x11nvc server สร้างไฟล์ชื่อ x11nvc.service ในไดเรกทอรี /lib/systemd/system/ คู่มือนี้ใช้ Vim แต่คุณใช้ text editor Linux อื่นได้ เช่น nano
sudo vim /lib/systemd/system/x11vnc.service
คัดลอกและวางเนื้อหาด้านล่างลงในไฟล์บริการที่สร้างใหม่
[Unit]
Description=x11vnc service
After=display-manager.service
network.target syslog.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -forever -display :0 -auth guess -passwd randompassword
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
[Install]
WantedBy=multi-user.target
ข้อความ randompassword คือรหัสผ่านที่คุณจะใช้ล็อกอินเข้าเซิร์ฟเวอร์ แก้ไขและตั้งเป็นรหัสผ่านแข็งแกร่งที่คุณต้องการ
โดยสรุป ข้อความในไฟล์บริการระบุว่า: นี่เป็น child service ระบบควรเริ่มบริการนี้หลังจากบริการอื่นๆ เริ่มแล้วทั้งหมด หากล้มเหลว บริการควร restart เองก่อนถึง multi-user target
หากใช้ Vim กด Esc แล้วพิมพ์ :wq ตามด้วย Enter เพื่อบันทึกและออกจาก Vim editor
หลังบันทึกไฟล์ ให้ reload systemd manager configuration และ unit files
systemctl daemon-reload
จากนั้นเปิดใช้งานบริการ x11vnc
systemctl enable x11vnc.service
สุดท้าย เริ่ม VNC server ด้วยคำสั่ง:
sudo systemctl start x11vnc.service
ตรวจสอบสถานะบริการ x11vnc ด้วย systemctl
systemctl status x11vnc.service
ผลลัพธ์ควรคล้ายภาพด้านล่าง
จากผลลัพธ์ บริการ active และ running
สิ่งสำคัญอีกอย่างคือพอร์ตที่ x11vnc server ใช้ (ในกรณีนี้ พอร์ต 5900)
เปิดพอร์ตเซิร์ฟเวอร์ใน Firewall ของคุณ
Ubuntu ใช้ firewall ufw เป็นค่าเริ่มต้น เพื่อให้ PC อื่นเข้าถึงระบบ Ubuntu ผ่านพอร์ตที่ x11vnc server ใช้ ให้รันคำสั่ง:
sudo ufw allow 5900/tcp
เชื่อมต่อจากคอมพิวเตอร์อื่น
ตอนนี้คุณเชื่อมต่อกับระบบ Ubuntu ผ่าน remote desktop connection ด้วย VNC ได้แล้ว
คุณใช้ VNC client ใดก็ได้เพื่อเชื่อมต่อกับ Ubuntu Linux PC หนึ่งใน VNC viewer ที่แนะนำคือ VNC Connect โดย RealVNC ใช้ได้กับเกือบทุกแพลตฟอร์มหลัก รวมถึง macOS, Linux, Windows, iOS, Android ฯลฯ
ดาวน์โหลด: VNC Viewer by RealVNC
หลังดาวน์โหลด VNC client ติดตั้งบนระบบและเปิดแอปพลิเคชัน
คู่มือนี้ใช้การติดตั้ง VNC Connect บน macOS แต่กระบวนการคล้ายกันสำหรับ OS อื่นๆ
ใส่ IP address ของ PC ที่ต้องการเชื่อมต่อ ตามด้วยหมายเลขพอร์ตที่ x11vnc server ใช้ แล้วกด Enter เพื่อเชื่อมต่อ
หมายเหตุ: ใน Ubuntu คุณได้ IP address โดยพิมพ์คำสั่ง:
ip addr
การเชื่อมต่อ VNC จะไม่ได้เข้ารหัส (unencrypted) หมายความว่าใครก็ตามที่ขavesdrop เครือข่าย เข้าถึงข้อมูลและดูได้ง่าย รหัสผ่านอย่างไรก็ตาม ถูกเข้ารหัส VNC client จะเตือนเกี่ยวกับการเชื่อมต่อที่ไม่ได้เข้ารหัส กด Continue เพื่อดำเนินต่อ
หน้าจอถัดไป จะขอให้ใส่รหัสผ่าน ซึ่งเป็นรหัสผ่านที่คุณตั้งในไฟล์ x11vnc.service ข้างต้น ใส่รหัสผ่านตามนั้นและกด Ok เพื่อดำเนินต่อ
ตอนนี้คุณสามารถเข้าถึง PC ของคุณจากอุปกรณ์อื่นได้แล้ว
ปิดการล็อกหน้าจอ (Screen Locking)
ปัญหาหนึ่งที่เจอขณะใช้ x11vnc server คือ screen locking อย่างไรก็ตาม แก้ไขได้ง่ายด้วยการปิด screen lock บน PC
ไปที่ Settings > Privacy > Screen Lock ตรวจสอบให้แน่ใจว่าปิด Automatic Screen Lock และ Lock Screen on Suspend
หมายเหตุ: นี่เป็นความเสี่ยงด้านความปลอดภัยที่เป็นไปได้ จงเปิดใช้งานอีกครั้งภายหลัง
ทำงาน Remote บนเครื่อง Linux ของคุณ
โปรแกรม Remote desktop เป็นส่วนสำคัญของชีวิตหากคุณทำงาน remote แม้คุณจะมี VNC server ตั้งค่าบนระบบแล้ว คุณก็เข้าถึงระบบไม่ได้โดยไม่มี VNC client ด้วย VNC server ติดตั้งบน Linux PC คุณเข้าถึงระบบจากอุปกรณ์อื่นได้ ตลอดเวลา และจากทุกที่
ระบบปฏิบัติการไม่ใช่ข้อจำกัดใน remote computing มีแอปพลิเคชันหลายตัวสำหรับเกือบทุก OS ให้ตั้งค่า VNC server บนคอมพิวเตอร์ของคุณ