Monday, November 4, 2013

Tunnelling VNC remote Over SSH on Windows via putty

Setting at VNC Server
  • ให้เรา remote ผ่าน ssh เข้าไปที่ VNC Server และพิมพ์คำสั่ง เพื่อสร้างช่องทางเชื่อมต่อโดยในที่นี้จะ remote แล้วได้ resolution  vnc server ที่ความละเอียด 1024*768 พิมพ์เลขให้ถูกต้องนะครับ ใช้ตัวอักษร เอ็กพิมพ์เล็ก (x) แทนการคูณ (เราสามารถแก้ความละเอียดได้ตามความต้องการ)
$ vncserver -geometry 1024x768
  • ทำการแก้ไขไฟล์ graphic config ของ vnc ซะหน่อย (เพราะ server ของผู้เขียนเป็น debain ค่าเริ่มต้นของไฟล์นี้จะเป็นแบบ x desktop ซึ่งจะมีหน้าจอสีเทา แค่นั้นเมื่อรีโมทไป จึงต้องแก้ค่า คอนฟิกใหม่) ด้วยคำสั่ง
nano ~/.vnc/xstartup
  • แก้ไขให้เป็นประมาณนี้ (ในที่นี้จะ vnc เข้าไปแล้วใช้ gnome เป็น desktop) แก้เสร็จทำการ save ซะ
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#startkde &
gnome-session &
  • ทำลาย session vnc ที่สร้างไว้เมื่อตะกี้ก่อน เพื่อโหลดค่า graphic config ใหม่ซะหน่อย
$ ps -ef | grep vnc
user 19935 19884 0 10:46 pts/0 00:00:00 grep vnc //ผลแบบนี้คือ ไม่มี vnc session รันอยู่
  •  ถ้ามี vnc session รันอยู่ก็ kill ให้เรียบร้อยซะ ด้วยสิทธิ์ที่สามารถ kill ได้นั่นแหละ 
$ kill [pid vnc] 
  • ถ้ามันขึ้นประมาณบรรทัดนี้ก็ไม่ต้อง kill ให้เสียเวลา แสดงว่าไม่มี vnc session รันอยู่ครับ 
  • ตั้งค่า password vnc ซะหน่อยด้วยคำสั่ง (มันจะให้ใส่ password 2 ครั้ง)
$ vncpasswd
  • พิมพ์คำสั่ง เพื่อสร้างช่องทางเชื่อมต่อ อีกครั้ง 1
$ vncserver -geometry 1024x768
  • บน remote server ของผู้เขียนได้ผลลัพธ์ประมาณนี้ เมื่อรันคำสั่งด้านบน
New 'myname-host:1 (env)' desktop is myname-host:1
Starting applications specified in /home/myname/.vnc/xstartup
Log file is /home/myname/.vnc/myname-host:1.log
You have new mail in /var/mail/myname
  • ผลลัพธ์ของผู้เขียนจะสร้าง display 1 เตรียมไว้ให้ remote เข้าไป จำเลขนี้ไว้ เลข 1 เราจะนำค่านี้ไปคอนฟิกใน putty อีกรอบ 
  • ทางฝั่ง remote server พร้อมให้ remote แล้ว

Setting at client
  • เปิด putty แล้ว login เข้าไปที่ VNC Server ให้เรียบร้อย เพราะเราจะใช้ SSH session นี้ให้ vnc client เกาะไปด้วยจ้า ซึ่งบน VNC Server เราได้สร้างช่องเชื่อมต่อแล้วด้วยคำสั่ง แรกในการตั้งค่าที่ VNC Server ซึ่งถ้า session SSH นี้ปิดไป VNC Client ที่เรากำลังเชื่อมต่ออยู่น่าจะถูกปิดไปด้วยประมาณนั้น
  • จากนั้นคลิกขวาที่ title bar ของ putty เลือก Change Settings...
  • ไปที่ Connection => SSH => Tunnels ตั้งค่า Source port เป็น 5901
  • และ Destination เป็น localhost:5901 
  • สุดท้ายคลิก Add ตามด้วย Apply 
  • หมายเหตุ : ถ้าเลขที่เราได้จากคำสั่ง vncserver -geometry 1024x768 ด้านบนเป็นเลขอย่างอื่นที่ไม่ใช่เลข 1 ก็ให้ตั้งค่า Source port และ Destination ให้ลงท้ายด้วยเลยตัวนั้น เช่น ถ้าได้เลข display 2 ก็ให้ตั้งค่า Source port เป็น 5902 และ Destination เป็น localhost:5902 
  • สุดท้ายเปิด vnc viewer ขึ้นมาพิมพ์ localhost:5901 ที่ VNC Server ถ้าตั้งค่าสำเร็จมันก็จะให้เราใส่รหัสผ่าน ที่ได้ทำการตั้งไว้ (ด้วยคำสั่ง vncpasswd จำได้หรือป่าวตอน คอนฟิก vnc server)


เพิ่มเติม
  • เราสามารถ เลือก x desktop ได้ว่าจะให้รันอะไร ตอนเริ่มต้นในที่นี้กำหนดให้เป็น gnome ที่จะถูกเลือกตอน remote เข้าไป 
  • ถ้าเราต้องการได้ kde เป็น x desktop ที่จะถูกเรียกตอน remote ให้เราแก้คอนฟิกไฟล์ 
  • nano ~/.vnc/xstartup เปลี่ยนค่า จาก gnome-session & ไปเป็น startkde &
  • การ remote ครั้งนี้ client เป็น windows 8 และ VNC Server เป็น Debian 6 นะจ้ะ
  • สุดท้ายที่ server เราต้อง install หรือ enable VNC Server ก่อนนะจ้ะ อย่าลืม
  • และสุดท้ายจริงๆ คือ ห้ามปิด putty ที่ ตั้งค่านี้ไว้เด็ดขาด เพราะ vnc มันอาศัย session ของ putty นี้ทำงานอยู่ครับพี่น้อง
Refer

No comments:

Post a Comment