arduino 官網 arduino uno

Arduino 物聯網應用 - 上課教材

動畫互動網頁程式設計 > 課程內容 > 第 11 章 - 使用 knock 連線到伺服器

第 11 章 - 使用 knock 連線到伺服器

上次更新日期 2022/12/29

許多 wifi 資料總是得要連線到 Server 才行!我們連線到 server 通常使用的是 PHP 的網頁程式語言, 透過 arduino/esp8266 等 IoT 小設備的 wifi 連線到 Server 後,就可以溝通資料。問題是,我們的 Server 總得有 PHP 的網頁檔案吧!通常我們會使用 ssh 連線過去!只是,ssh 是恐怖的服務,我們得要注意網路資安的問題!

學習目標:

  1. 學習使用 knock 軟體

11.1: 使用 knock 用戶端程式

通常玩到物聯網之後,下一步就是將資料上傳到伺服器,通過網頁程式語言慢慢進行一些額外的處理!在伺服器上面, 除了要將資料存下來的資料庫之外,我們通常也需要撰寫 PHP 程式碼~一般連線到這樣的程式碼,通常是透過 ssh 或 ftps 等, 然後以類似 vscode 或 nodepad++ 等軟體,在其他界面當中進行程式編輯。當然,你也可以直接 ssh 到 server 上面, 然後使用純文字編輯器進行程式的撰寫!都可以的!

  • ssh 與 knockd

但是, ssh 可以讓我們直接連線到伺服器裡面,取得互動界面之後,你就可以做任何事情了!這個服務對於系統來說, 是挺恐怖的!所以,大部分伺服器的 ssh 服務,基本上都是有加防火牆限制連線的。但是,我們一般用戶,不太可能具備固定的 IP, 因此,伺服器的防火牆很難針對一般用戶的變動 IP 進行防火牆設計!這時,knockd 服務就顯得很重要!

knockd 可以在 server 上面啟動一個監督網路的服務,透過使用者『敲擊』某些特定的埠口,當使用者『透過正確順序』來敲擊到管理員規範的埠口, 此時,伺服器上面,就會針對剛剛敲擊系統的那個用戶端 IP 進行數分鐘的防火牆放行功能!如此一來,我們的用戶端電腦, 就可以順利的連上伺服器了!未來要連線伺服器時,都需要先進行上述的敲擊行為。

  • windows 用戶端的 knock 軟體

過去 knock 就很熱門,只是,使用者大部分都具有比較好的系統管理能力,因此大部分都是使用文字界面,所以,對於一般大眾來說, 還是不容易操作啦!現在,我們要感謝網友的貢獻,如下連結,Greg 網友提供了一個圖形界面的 knock 用戶端軟體可以在 windows 上面執行! 使用方法也很直觀方便!你可以下載看看:

根據作者的說明,解壓縮的密碼為『 portknock 』,執行該軟體之後,就可以取得如下的畫面,你可以將 IP 與 port 記憶起來, 所以,可以在輸入完 IP 項目後,在『Desc』項目輸入一些記憶的說明,然後下在再開這個軟體時,點選上面對話框的資訊, 就可以直接敲擊了!當然,填寫完畢要紀錄時,記得按下『Add/Update』即可。相關的埠口與 IP,請與你的伺服器管理員洽詢。

knock 的示意圖

11.2: vscode 使用 ssh 與非正規埠口

Visual Studio Code (通常簡稱 vscode) 是使用很廣泛的程式編輯軟體,擁有很多外掛!我們可以在底下的位置上面, 取得這套軟體:

安裝完畢並且啟動之後,如果你想要直接連接上我們的 server 時,那就得要安裝外掛模組~安裝外掛模組的方式, 例如底下的範例,在左方的方塊點選後,左上方填入 ssh 關鍵字,搜尋到的第一個外掛,就是『 Remote-SSH 』這個,點擊之後, 就可以看到『install』的按鈕,點擊安裝,大概花個幾秒鐘時間,就可以安裝妥當~

vscode 示意圖

然後,依據底下的流程,去建立好你的 ssh 連線方式!

vscode 示意圖 vscode 示意圖 vscode 示意圖 vscode 示意圖 vscode 示意圖 vscode 示意圖 vscode 示意圖

上面的動作操作完畢,你的 vscode 就可以直接連上伺服器,互相連動進行工作囉!就這麼簡單!

11.3: 參考資料