เดสก์ท็อปและอุปกรณ์

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 โดยไม่มี password
  • enable_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

EOF.← กลับไปอ่านบทความอื่น