本文譯自樹莓派雜誌96期(MagPi issue 96),原文標題為Remote access your Raspberry Pi securely(插圖來源取自雜誌內頁)。本篇使用CC 3.0 BY-NC-SA授權,若有任何不妥與指教敬請告知。若在實際操作中遇上問題,無法提供相關技術支援服務。

 

小巧又低耗能的樹莓派不只是許多人遠端部署的好選擇,將樹莓派和另台電腦連線更是多數使用者的需求。

要遠端連線樹莓派有許多方法,最常見的便是利用SSHVNC

SSH和VNC都需要開啟樹莓派的埠號(VNC使用埠號5900+N,SSH則為埠號22),你的樹莓派將有可能暴露在風險中。駭客很可能透過你的公開埠號和默認密碼入侵並查看你的樹莓派。這也是為什麼一旦開啟VNC就得改變默認密碼設定。

 

有些更小心謹慎的人會使用第三方服務保護樹莓派;在本次的教學中,我們將帶大家透過remote.it 以樹莓派作為遠端存取閘道器的工作網路。你能夠在不利用前述埠號的情況下,以remote.it遠端連線樹莓派:將remote.it伺服器作為代理連線,或是利用它建立對等網路。Remote.it官方表示相比於傳統的VPN連線,是建立閘道器更安全的方式。

 

你將會需要:

  • 樹莓派

  • remote.it帳號

  • Raspberry Pi OS

  • VNC Viewer(cc/vncviewer

 

隱私警告!

遠端連線服務扮演著網路傳輸者角色,且檔案可以通過第三方系統傳輸。技術上來說,服務提供的廠商不能獲取顧客們的檔案內容,但部分廠商會保留此權利。其他一些廠商則會限制傳輸資料內容(通常取決於當地法律),請務必仔細閱讀條款和條件。

 

建立帳號

為了能遠端連線樹莓派,你需要先建立帳號。打開網頁瀏覽器並輸入:https://remote.it。點擊「Sign up註冊」後,輸入你的郵件地址。你會收到一封認證碼郵件,將郵件中的認證碼輸入註冊頁面後,再填入並重複確認你的自訂密碼。請確保你使用的是一個安全的密碼(可參考:How To Geek雜誌的guide on strong passwords如何自訂安全密碼)。

 

開啟SSH和VNC

為了遠端遙控,必須在樹莓派上啟用SSH和VNC。

點擊主選單並選擇Preferences > Raspberry Pi Configuration,選擇Interfaces頁籤並將SSH及VNC啟用。

VNC的圖示將會顯示在主選單橫條區,請確保你使用的不是默認密碼(選擇樹莓派Configuration的System頁籤修改密碼)。若是想更進一步的保護電腦,可以參考閱讀樹莓派的文件Securing your Raspberry Pi保護你的樹莓派一文。

 

更新及安裝

請先確認你的樹莓派已連接上網路(連接無線區域網路或乙太網路線)。打開終端機視窗並輸入以下指令:

sudo apt update

sudo apt install remoteit

當套件被安裝後,終端機會輸出以下配置資訊:

Continue your device configuration at http://find.remote.it or http://raspberrypi.local:29999 or http://192.168.0.41:29999

上述IP地址會因你的網路而有所差異。

 

註冊樹莓派

 

開啟樹莓派的網頁瀏覽器,並載入http://find.remote.it頁面。視窗將會自動搜尋已載入remote.it軟體的裝置(即你的樹莓派)。

當系統找到你的樹莓派時,螢幕將會顯示「Unregistered device未註冊裝置」並附上閘道器細節及IP地址(若是此連結無法順利運作,請嘗試另外兩種列在配置資訊欄上的網址)。點擊註冊將樹莓派加到remote.it中,需輸入在remote.it註冊的郵件地址及密碼。

 

名稱欄位顯示著「raspberrypi」(可自訂為其他偏好名稱)。系統視窗將會顯示3個默認服務:ssh、vnc及remoteit Admin Panel。再次點擊註冊將樹莓派加到你的remote.it帳號中。 

 

小訣竅:使用現有的OS image映像檔

Remote.it提供預先配置好的軟體映像檔,包含了所需的軟體及安裝設定,可見:remote.it/downloads

 

 

開始連線

接著能透過remote.it連接樹莓派了。連線有以下兩種方式:透過Web服務或是使用remote.it專用軟體。

先為大家介紹Web服務,它提供代理連接的連線方式,所有資料都會透過remote.it的一個代理伺服器傳輸。

開啟另台電腦的網頁瀏覽器,並載入至app.remote.it(輸入你的remote.it登入認證)。

點擊Connect連線,並選擇「Raspberry Pi – VNC」。「VNC – Connection」視窗將會出現,並顯示主機及埠號資訊。

 

透過VNC Viewer連線

開啟你的VNC軟體(範例使用VNC Viewer)並選擇File > New connection。將包含代理伺服器及埠號等資訊,剪下並貼至VNC伺服器欄位。我們的會像這樣:proxy50.rt3.io:31249。

重複點擊圖示,並點選警告視窗上的Continue。輸入「pi」作為使用者名稱及你的Raspberry Pi OS密碼。點擊OK即可遠端遙控你的樹莓派。

 

透過app連線

使用Web服務的壞處是所有資料都是透過單一代理電腦傳輸;為了獲得更隱密的連線,提供Windows和macOS用戶的remote.it app讓你能夠建立對等網路連線。

資料將不會透過remote.it伺服器傳輸(僅有連線資訊),資料吞吐量更快速,也因此在螢幕反應上更好,且只要兩邊設備都保持連線狀態,將會持續保持連接。最後,網址將會一致且能被建立書籤(不像代理連線,當你開始連線時得重新進入VNC Viewer)。

為了建立對等網路連線,你必須下載remote.it的桌面軟體。在app.remote.it網頁點擊「Get Desktop app」(或至download page下載),並點擊「Download for Windows」(取決於你的電腦作業系統,也有macOS版本可下載)。重複點擊安裝檔案,並遵照安裝指南說明。開啟remote.it軟體,你會看到「We need to install or update our service in order to maintain background connections.」,點擊Install Service及User Account Control 警告的Yes。

在app中輸入你的remote.it帳號認證並登入。

在Devices下方會看見你的樹莓派,點擊它,並點擊VNC旁的Connect。當順利連線時,VNC圖示將會轉為藍色。

你能夠直接透過app使用VNC Viewer(使用launch圖示),或是複製貼上連線資訊至VNC Viewer(同先前的步驟那樣)。

 

隱蔽你的埠號

你可以透過remote.it遠端遙控樹莓派;然而你的VNC連接埠卻是開放且能被listen的,你可以以此lsof (list of files)指令確認:

sudo lsof -i -P -n | grep LISTEN

當remote.it連接時,它會顯示vncserver運行於port 5900。解決方法是使用remote.it提供的腳本,隱蔽此連接埠。當啟用此隱蔽腳本,由於此連接埠不會回應外部傳輸,其他人便無法掃瞄你的樹莓派尋找公開埠號;remote.it軟體則因其建立連線而能順利連接。

 

上傳腳本

你可以在樹莓派上以任何語言使用remote.it的腳本。最佳的方式是使用測試腳本練習。前往remote.it 官網的Uploading a Device Script 頁面,點擊「show-device-info.sh」下載檔案。

在app.remote.it網頁介面,選擇「Scripting」並點擊「Upload」。將選項改為「Executable script or program」並點擊「Choose file」。利用File Explorer視窗尋找文件並點擊「Upload」。

 

小訣竅:建立腳本

remote.it支援任何你的樹莓派所支援的語言之腳本;腳本將會如同其他文件般順利執行。magpi.cc/remotescripting

 

 

運行腳本

腳本將會運行於Devices視窗,勾選樹莓派及「Show advanced columns」(將會顯示StatusA、StatusB、StatusC及其他使用此測試腳本的欄位)。點擊Actions > Execute Script;點選「show-device-info.sh」並點擊「Next」。

勾選此選項:「Check to allow all devices to update the status columns during Job execution」,將會在腳本運行時在欄位顯示更多資訊。

 

隱蔽腳本

從remote.it的GitHub頁面下載cloak-vnc.sh腳本,以和show-device-info.sh腳本同樣的方式,將它上傳並運行於Devices視窗。

這次你將會在Bulk Execution視窗看見兩個選項:「Cloak Service」和「Uncloak Service」。勾選「Cloak Service」後點擊「Finish and Submit」。腳本會需要一些時間運行。選擇側邊欄的「Scripting」可以看見目前腳本進度。你也可以在視窗中取消並刪除腳本。

通常工作狀態更新平均會需要3分鐘,因此你的腳本也許會早於Job Status運行完成並開始更新,而這會需要3至4分鐘。

 

隱蔽並連線

現在可以透過remote.it app以安全的連線方式連接到你的樹莓派了。樹莓派連接埠將會因使用remote.it服務連線而為隱蔽的,不必公開地分享IP及埠號資訊。且對等網路服務將確保你的資料不會因remote.it外流。

 

小訣竅:代理伺服器vs對等網路

Remote.it解釋了代理伺服器及對等網路的連線差異,詳情可見此文件:magpi.cc/remotep2p