學習日誌十九:Home Assistant使用SSH
目錄
⦿ SSH
⦿ Terminal & SSH 安裝
⦿ Terminal & SSH 設定
⦿ Home Assistant 在 CLI 下以密鑰登入
SSH(Secure Shell,安全外殼協定、安全殼層),最常用來做為 Command-Line-Interface(命令列介面,CLI)的加密傳輸協定。
我們先看看 SSH 英文的解釋,如下:
SSH
Secure Shell, is a cryptographic network protocol. Typical applications are remote login and command-line execution to another computer.
在前面文章提過 SSL,接下來來講 SSH。
SSH 跟 SSL 以英文組成來說長得很像(誤),並且都採用 Asymmetric cryptography(非對稱加密)方式,非對稱加密指的是 加密 與 解密 用不同的密碼,需有 私鑰 與 公鑰,可以這樣理解,SSL,是用在 HTTP 上的加密;SSH,是用在 CLI 上的加密。
在前一篇雖然介紹了 Terminal & SSH 這個 Add-ons(附加元件、插件),但沒有提到如何使用 SSH 連線,今天如果要透過你電腦的 命令列介面 去連 HA,我們就要在這個 Add-ons 裡做一些設定。
繼續閱讀|回目錄
Terminal & SSH 安裝
在 HA 安裝完成後,雖然有許多附加元件可以使用,不過很多時候我們還是需要倚靠命令列介面去執行一些操作,Terminal & SSH 就是一個幫助我們用 Command-Line 這樣的附加元件。
進到 設定 => 右下角附加元件商店 => 搜尋列鍵入 “ terminal ”
安裝後,打開於側邊列顯示。
注意!如果你在 Add-ons 裡搜尋不到 Terminal & SSH!這時候很重要的,我們必須要先到登入帳號的地方,拉到下方,把進階模式給打開,如此才能使用 SSH。
我們看到下圖左,順帶一提 SSL,這時通知推送(需要啟用前端 SSL 加密)是打不開的,後面我們會介紹如何加入 SSL 安全憑證。
在下圖右我們看到通知推送(設定 notify.html5)與圖左顯示不同,是因為右圖的 HA 已加入 SSL。
Terminal & SSH 設定
我們看到下圖左,在這個附加元件設定的地方,若以列表方式,依序看到 SSH 的加密鑰、登入密碼 等。
下圖右,轉成以 YAML 編輯,我們先試著加入密碼,例如 1234。
這時若以 CLI 試著登入仍是沒有辦法的,在 CLI 鍵入如下:
注意! ~ % 後方才是 CLI 的指令~ % ssh root@homeassistant.local
或是
~ % ssh root@192.168.XXX.XXX此時會出現下面的提示訊息
ssh: connect to host homeassistant.local port 22: Connection refused
因為你還必須打開 SSH 的預設 port 22,關於 port 可以參考之前文章。
我們拉到下方,在網路的地方鍵入 22,提醒大家,區塊的更動需儲存,重啟 Add-ons 才會應用。
設定完成後,在 CLI 下鍵入如下:
~ % ssh root@192.168.XXX.XXX
這時就會要你輸入密碼,密碼即是剛剛設定 SSH 的登入密碼 1234。
成功的話就會在 CLI 看到這樣的畫面:
這是 SSH 設定密碼的登入,不過,若要以密鑰登入應該怎麼做呢?
繼續閱讀|回目錄
Home Assistant 在 CLI下以密鑰登入
首先,先來看幾個 CLI 下的指令
產生密鑰
~ % ssh-keygen
產生密鑰的過程會看到如下:
1. 正在產生ssh key(公鑰與私鑰),採 RSA 的非對稱加密演算法
2. 在哪個資料夾保存你的 ssh key
3. ssh key已存在,是否覆蓋?輸入y
4. 要設定多一層保護的密碼嗎?沒有則直接按Enter
5. 確認多一層保護的密碼,沒設定也直接按Enter
6. 你的ID存在這個資料夾
7. 你的公鑰存成那個資料夾的檔案後面的 fingerprint、randomart 是用來做金鑰管理與辨識的可以不管它
接著鍵入
切換至該資料夾
~ % cd /Users/chunlicheng/.ssh列出資料夾裡的檔案,前面的 .ssh 代表已切換至該資料夾
.ssh % ls
得到如下的結果,其中重要的是剛才 id_rsa.pub 的這個檔案
再鍵入
將 .ssh 資料夾下的檔案,印在 CLI 上
.ssh % cat id_rsa.pub若你有路徑則可以這樣做,一樣是去該資料找到檔案,印在 CLI 上
~ % cat ~/.ssh/id_rsa.pub
得到如下的結果,這就是你 SSH 的密鑰
我們把從 ssh-rsa 開始,到你的電腦名稱前的 E= 為止複製起來,把它貼在 Terminal & SSH 的 Authorized Keys 裡面,一樣記得儲存、重啟 Add-ons。
在 YAML 格式如下:
這下就可回到你的 CLI,也一樣鍵入
~ % ssh root@homeassistant.local
不需要再詢問密碼,因為你已經用密鑰登入了,我們再看一次 CLI 版的可愛的 HA 吧!
繼續閱讀|回目錄
以下 Reference: