หากเชื่อมต่อ remote desktop ด้วยโปรโตคอล Virtual Network Computing (VNC) การเชื่อมต่ออาจไม่ปลอดภัย บาง VNC clients เช่น TightVNC ยอดนิยม ไม่เข้ารหัสการเชื่อมต่อเกินขั้นตอน sign-in เริ่มต้น เพื่อแก้ปัญหานี้ สามารถ tunnel การเชื่อมต่อ VNC ผ่าน Secure Shell (SSH) tunnel
SSH tunnel ไม่ได้แค่ให้การเชื่อมต่อปลอดภัยสมบูรณ์สำหรับ VNC แต่ยังอนุญาตให้ใช้ VNC connections เมื่อพอร์ท VNC ปกติ (port 5901) ถูกบล็อก เครือข่ายองค์กรบางแห่งบล็อกพอร์ททั่วไปอย่างพอร์ท 5901 เพื่อความปลอดภัยเพิ่มเติม การ tunnel VNC ผ่าน SSH จะช่วยหลีกเลี่ยงปัญหานี้
ตั้งค่า PuTTY
Windows 10 มี SSH client built-in แล้ว ผ่าน Windows PowerShell แต่เป็นการพัฒนาล่าสุด หากอยากรู้วิธี tunnel VNC ผ่าน SSH แนะนำใช้ PuTTY ทำการเชื่อมต่อไปยัง SSH server
PuTTY ให้ graphical user interface ที่ตั้งค่าได้ง่าย เพื่อ tunnel ซอฟต์แวร์อื่น เช่น VNC viewer ผ่านการเชื่อมต่อ สำหรับให้ทำงาน ต้องมี SSH server ที่เหมาะสมติดตั้งบน remote desktop PC หรือ server ที่ต้องการเชื่อมต่อผ่าน VNC
- เริ่มต้น ดาวน์โหลด PuTTY และเปิด client
- เมนู Session หลัก ให้พิมพ์ server IP address หรือ hostname พิมพ์ที่อยู่ SSH server ในกล่อง Host Name (or IP address) หาก SSH port ต่างจากพอร์ทมาตรฐาน 22 ใส่ในกล่อง Port
- อยาก save session นี้ ใส่ชื่อที่เหมาะสมในกล่อง Saved Sessions แล้วคลิก Save
- ในเมนูซ้าย ขยายแท็บ Connection แล้วขยาย SSH คลิก Tunnels
- ในส่วน Port forwarding ของเมนู Tunnels ให้รายละเอียดเพื่อให้ PuTTY tunnel การเชื่อมต่อ VNC ผ่าน SSH ในกล่อง Source port พิมพ์ 5901 ในกล่อง Destination พิมพ์ remote IP address:5901 ใช้ IP address ของ remote desktop PC หรือ server . เช่น 192.168.1.100:5901
- กลับไปส่วน Session คลิกชื่อ saved session ใต้ Saved Sessions แล้วคลิก Save บันทึกการตั้งค่า
- พร้อมการตั้งค่า PuTTY แล้ว สร้างการเชื่อมต่อ SSH โดยคลิก Open ด้านล่าง จะต้องใส่ username และ password เพื่อเชื่อมต่อ SSH เมื่อ PuTTY พยายามเชื่อมต่อ
- เมื่อล็อกอินเสร็จ จะได้เข้าถึง SSH terminal window สำหรับ remote desktop
ด้วย SSH tunnel ไป remote desktop server ที่ active อยู่ ตอนนี้สามารถเชื่อมต่อ VNC ได้ ใช้ VNC client ไหนก็ได้ แต่นี้จะวิธีเชื่อมต่อด้วย TightVNC client ยอดนิยมและฟรีสำหรับ Windows และ Linux
สามารถ minimize PuTTY ขณะเชื่อมต่อ active อยู่
เชื่อมต่อด้วย TightVNC
หาก SSH connection active การเชื่อมต่อด้วย TightVNC ง่าย สมมติว่า VNC server รันบน remote PC หรือ server
- เปิด TightVNC เริ่มต้น ในส่วน Connection พิมพ์ localhost::5901 หรือ 127.0.0.1::5901 ในกล่อง Remote Host PuTTY กำลัง monitor พอร์ทนี้ และจะ forward การเชื่อมต่อนี้อัตโนมัติไป remote server เมื่อพยายามเชื่อมต่อ
- ตั้งค่า VNC connection เพิ่มเติมได้โดยคลิก Options แต่หากพร้อมเชื่อมต่อ คลิก Connect
- จะขอ VNC server password ใส่ในหน้าต่าง VNC Authentication pop-up แล้วคลิก OK
หาก SSH connection ทำงานถูกต้อง TightVNC ควรโหลดหน้าต่าง remote VNC desktop พร้อมใช้งาน
SSH Clients ที่รองรับ Tunneling
แม้ TightVNC เป็น Windows client ยอดนิยมสำหรับ VNC connections แต่ไม่รองรับ SSH tunneling ภายใน client เอง ต้องใช้ PuTTY ทำการเชื่อมต่อ
VNC clients อื่นๆ แต่มี SSH tunneling ภายใน client เอง ตัวอย่างคือ SSVNC ซึ่งแม้ basic แต่จะ tunnel ผ่าน SSH ก่อนทำ VNC connection SSVNC รองรับ Windows และ Linux
- เปิด SSVNC client ในหน้าต่างหลัก SSVNC ใส่ข้อมูลที่ต้องการ ภายใต้ VNC Host:Display พิมพ์ SSHusername@remoteIPaddress:1. แทนที่ SSHusername ด้วย username สำหรับ SSH connection และ remoteIPaddress ด้วย IP ของ remote desktop ตัวอย่าง root@192.168.1.100:1
- ตรวจสอบให้แน่ใจว่าเลือก Use SSH หรือ SSL+SSL option ก่อนเชื่อมต่อ พร้อมแล้วคลิก Connect
- จะขอ SSH password ใน pop-up terminal window ใส่ password แล้วกด enter
เมื่อ SSH tunnel active แล้ว VNC connection จะเริ่ม และหน้าต่าง VNC client ควรปรากฏ พร้อมใช้งาน remote desktop
แม้การเชื่อมต่อ VNC ไม่ได้เข้ารหัสโดยค่าเริ่มต้น แต่ Microsoft's own Remote Desktop Protocol เป็น เข้ารหัส หากใช้ Windows และวางแผนเชื่อมต่อ remote Windows PC หรือ server สามารถใช้ Remote Desktop Connection tool แทนได้