How to configure WayVNC for macOS Screen Sharing
หากต้องการใช้แอป Screen Sharing ที่มากับ macOS เชื่อมต่อ desktop ของ Raspberry Pi ที่ใช้ WayVNC เราต้องตั้งค่า authentication ให้รองรับ client ของ Mac และเปิดให้รับ connection จาก IP ใน LAN
ตัวอย่างนี้ใช้ Raspberry Pi OS Desktop ที่ทำงานบน Wayland เช่น labwc และใช้ WayVNC 0.10 ขึ้นไป ซึ่งเพิ่มการรองรับ legacy DES authentication สำหรับ client อย่าง macOS แล้ว สามารถตรวจ version บน Pi ได้ด้วยคำสั่ง
wayvnc --version
Mac และ Pi ต้องอยู่ใน LAN เดียวกัน โดย Pi ต้องมี desktop session ทำงานอยู่ วิธีนี้ไม่ได้ติดตั้ง desktop ให้ Raspberry Pi OS Lite ถ้าหากเครื่องยัง boot เข้า console ให้ตั้งค่า desktop ก่อนตามบทความ How to change boot into text console or GUI in Raspberry Pi
1. เปิดใช้งาน VNC บน Raspberry Pi
รันคำสั่งบน Pi
sudo raspi-config
เลือก Interface Options → VNC → Yes เพื่อเปิด VNC server บนระบบ Wayland ที่มี WayVNC ติดตั้งอยู่ จากนั้นเลือก Finish
2. ตั้งค่าให้รองรับ macOS
แก้ไขไฟล์ config ของ WayVNC ที่ Raspberry Pi OS ใช้กับ system service
sudoedit /etc/wayvnc/config
ปรับหรือเพิ่มค่าต่อไปนี้ โดยแก้ค่าที่มีอยู่แล้วแทนการเพิ่ม key ซ้ำ และเก็บบรรทัดเกี่ยวกับ certificate และ key เดิม เช่น certificate_file, private_key_file และ rsa_private_key_file ไว้
address=0.0.0.0
port=5900
enable_auth=true
enable_pam=false
username=vnc
password=YOURPASS
relax_encryption=true
allow_broken_crypto=true
เปลี่ยน YOURPASS เป็นรหัสผ่าน VNC ของเราเองก่อนบันทึก ตัวอย่างนี้ใช้ password 8 ตัวอักษรสำหรับ legacy VNC และควรใช้รหัสที่ต่างจากรหัสผ่าน Linux
โดยที่
address=0.0.0.0ให้ server รับ connection ผ่านทุก IPv4 interface ถ้าตั้งเป็น127.0.0.1จะรับเฉพาะ connection ภายใน Pi จึงเข้าโดยใช้ IP จาก Mac ไม่ได้port=5900เป็น TCP port ที่ Mac จะเชื่อมต่อenable_auth=trueเปิดการยืนยันตัวตน ไม่เปิดให้เข้า desktop โดยไม่มี passwordenable_pam=falseให้ใช้usernameและpasswordใน config แทนบัญชี Linux เพราะ legacy DES authentication ใช้กับ PAM ไม่ได้relax_encryption=trueอนุญาตวิธีเชื่อมต่อที่ไม่บังคับเข้ารหัสข้อมูลหลังยืนยันตัวตนallow_broken_crypto=trueเปิด legacy authentication ที่ client รุ่นเก่าต้องใช้ร่วมกับค่าpassword
ไฟล์นี้มี password แบบข้อความ สำหรับ Raspberry Pi OS ที่รัน service ด้วย user vnc ให้จำกัดสิทธิ์ไฟล์ดังนี้
sudo chown root:vnc /etc/wayvnc/config
sudo chmod 640 /etc/wayvnc/config
การตั้งค่านี้เปิด compatibility กับ VNC แบบเก่าซึ่งไม่ได้เข้ารหัสภาพและข้อมูลการใช้งาน จึงใช้เฉพาะ LAN ที่เชื่อถือได้ และไม่ forward TCP port 5900 ออกอินเทอร์เน็ต
3. เริ่ม service ด้วย config ใหม่
คำสั่ง restart จะทำให้ VNC connection ที่เปิดอยู่หลุดชั่วคราว
sudo systemctl enable --now wayvnc.service
sudo systemctl restart wayvnc.service
systemctl is-active wayvnc.service
ss -lnt 'sport = :5900'
service ควรแสดง active และมี listener ที่ 0.0.0.0:5900 หากเปิด firewall อยู่ ให้กำหนด rule รับ TCP port 5900 เฉพาะจาก IP ของ Mac หรือ subnet ใน LAN ที่ต้องการใช้งาน
4. เชื่อมต่อจาก macOS
ดู IP ของ Pi ด้วยคำสั่ง
hostname -I
เลือก IP ของ interface ที่อยู่ใน LAN เดียวกับ Mac ตัวอย่างนี้สมมติว่าเป็น 192.168.1.50
บน Mac เปิด Finder แล้วกด Command + K ใส่ address
vnc://192.168.1.50:5900
หรือเปิดผ่าน Terminal ของ macOS
open "vnc://192.168.1.50:5900"
แอป Screen Sharing จะเปิดขึ้น ให้กรอก VNC password ที่กำหนดใน /etc/wayvnc/config ถ้ามีช่อง username ให้ใช้ vnc ตามตัวอย่าง เมื่อเชื่อมต่อสำเร็จจะเห็น desktop session ของ Pi ที่กำลังทำงานอยู่
อ้างอิง: WayVNC 0.10 release notes, WayVNC configuration, Raspberry Pi remote access และ Apple: VNC access and control