2017年12月11日 星期一

從外網以 VNC 存取樹莓派桌面的方法

周末回到鄉下迫不及待把這周改好的 reportip 程式傳入 Pi 3, 設定好 crontab , 果然每當 ADSL 公網 IP 異動時就會收到 E-mail 通知, 實在太棒了, 這樣無論我在哪裡都能用 Putty 連線鄉下家裡 24H 不關機的 Pi 3, 實現透過 Internet 遠端操控的夢想. 參考 :

從外網以 SSH 存取樹莓派的方法

不過這只是解決了命令列存取而已, 如果要用 VNC 遠端存取樹莓派桌面要怎麼做呢? 其實樹莓派自 PIXEL 版本之後就內建 VNC Server 了 (RealVNC), 不必再另外安裝, 因為 2016 年 9 月 28 日 RealVNC 與樹莓派基金會達成合作協議, 於新版的 Rasnbian 作業系統中納入 RealVNC, 參考 :

RealVNC and Raspberry Pi announce new partnership

我目前使用的 Rasbian PIXEL 是 2017 年 3 月版的, 裡面就已經內建 VNC 了, 可以在桌面的 Memu/Preferences/Raspberry Pi Configuration/Interfaces/VNC 選項中勾選 Enable 開啟 VNC 伺服器 :





這樣每次樹莓派開機時就會自動開啟 VNC Server 了. 如果上面的設定沒打開, 也可以用人工方式在命令列下 vncserver 指令開啟一個遠端桌面, 例如 :

pi@raspberrypi:~ $ vncserver
VNC(R) Server 6.0.2 (r26558) ARMv6 (Mar 14 2017 17:00:31)
Copyright (C) 2002-2017 RealVNC Ltd.
RealVNC and VNC are trademarks of RealVNC Ltd and are protected by trademark
registrations and/or pending trademark applications in the European Union,
United States of America and other jurisdictions.
Protected by UK patent 2481870; US patent 8760366; EU patent 2652951.
See https://www.realvnc.com for information on VNC.
For third party acknowledgements see:
https://www.realvnc.com/docs/6.0/foss.html

If a desktop environment fails to load for this virtual desktop, please see:
 https://www.realvnc.com/doclink/kb-345
Running applications in /etc/vnc/xstartup

VNC Server catchphrase: "Alias caviar race. Valid singer filed."
             signature: cc-3a-a7-ed-7b-b6-b4-2a

Log file is /home/pi/.vnc/raspberrypi:2.log
New desktop is raspberrypi:2 (192.168.2.192:2)

因為我已經下過一次 vncserver 了, 所以上面顯示這是開啟第二個遠端桌面伺服器. 不過這種方式不實用, 因為若萬一停電, 復電時它不會自動開啟 VNC Server. 利用 VNC 在內網進行遠端操控的方式可參考 :

https://www.realvnc.com/en/connect/docs/raspberry-pi.html#raspberry-pi-setup
樹莓派的遠端桌面控制 : 使用 VNC

從外網用 VNC 連線樹莓派桌面有兩個辦法. 一是傳統做法, 即在路由器防火牆上用 port forwarding 打個洞, 讓 VNC 的 5900 埠暢通; 二是使用 RealVNC 的 Cloud connect 服務, 根據 RealVNC 官網說明, Home 用戶在非商用條件下享有 5 台以內的免費 Cloud connect 服務, 參考 :

# Raspberry Pi VNC Cloud Connect
Connecting to your Raspberry Pi with VNC Viewer
VNC Connect and Raspberry Pi


Source : VNC connect


但我在桌面 Menu 找了老半天都找不到 VNC Server 程式入口, 只找到 VNC Viewer, 所以我還是按照下面這篇的方法, 在無線基地台上打個洞, 開啟 5900 埠作 port forwarding :

# How to: Connecting to VNC Server (5.x and before) over the Internet

因為 VNC 走的是 5900 埠, 因此必須在無線基地台的防火牆開啟我的樹莓派的 5900 埠, 在 EDIMAX 基地台設定如下 :





注意, 一定要按 Apply 鍵才會寫入記憶體. 然後用筆電的 VNC 從外網連線我 ADSL 目前的外網 IP :





Bingo! 馬上就連線成功, 當然透過 Internet 遠端連線比不上在 Intranet 或樹莓派本機上反應那麼快, 但還是可接受範圍啦 ! 至少可以讓我在外地也能操控鄉下的樹莓派, 隨時要改爬蟲程式變成可行, 不需要等到周末回鄉下才能做啦! 真是棒到不行.

參考 :

安裝與設定Raspberry Pi的RealVNC伺服器

20180313 補充 :

樹莓派官網有 VNC 的常見問與答, 例如如何修改 VNC 伺服器的連線密碼?如何在開機時就啟動 VNC 伺服器? 等等 :

[基礎] 以 VNC 和 Raspberry Pi 連線

沒有留言 :