學習日誌十九: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。

兩台不同的軟路由,安裝了不同使用情境的 HA。

前篇文章中,知道了下圖的事實,我們可以透過 ESXi,也可以在 HA 裡面直接使用 CLI。

不過,若要直接用 CLI 來連 HA 則需要按照此文一步步來完成。

HA中的CLI / ESXi中的CLI / MAC中的CLI
繼續閱讀|回目錄

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:

--

--

Chun-Li 春麗
彼得潘的 Swift iOS / Flutter App 開發教室

Do not go gentle into that good night, Old age should burn and rave at close of day; Rage, rage, against the dying of the light.