SSH 是一種傳輸的協議,常用於電腦之間的加密登入。SSH 使用的是一對密碼,一個公鑰一個私鑰,訊息透過公開的公鑰加密後傳遞,中途即使其他人可以看到加密後的訊息,但是因為沒有私鑰解密,仍無法知道訊息的內容,最後收到的人再拿私鑰解密,完成一次單方向的傳遞訊息。
若要雙方溝通,則需要兩對密碼,發信的人除了擁有對方的公鑰之外,也要產生另一份公鑰,發送給對方。
在 Home Assistant 的 ADD-ON STORE 裡,找到 SSH server 按下 INSTALL 安裝
安裝完成後,先別急著 START,往下看有個參數需要設定。
到電腦上打開 powershell ( 這裡以 windows 10 為例)。ssh-keygen 這個指令目前已經內建在 windows 10 內,如果無法使用這個指令的話,也可以使用 Putty這個軟體建立 SSH 金鑰。
// 簡單的版本
ssh-keygen -t rsa
ssh-keygen -t rsa -b 4096 -C "Marcus"
// -t: SSH金鑰的類型
// -b: SSH金鑰的長度
// -C: 金鑰的備註,後面的""裡的內容
產生完金鑰後,到 C:\Users\你的電腦名稱.ssh 下找到公鑰: id_rsa.pub,複製到 Home Assistant 的設定裡。
把整串包含 "ssh-rsa IFJOSDFNSO.....==你的註解" 複製到 "authorized_keys": ["這裡"],使用""包起來。
要注意的是複製後,""要在公鑰的兩側,像下圖多了個換行,會使 SSH Serser 無法執行。
按下 SAVE 後,重新啟動 Home Assistant。
待重新啟動後,再回到終端視窗輸入 "ssh root@hassio.local" 就可以直接進入 Home Assistant囉。
從 client ( 我們的電腦 ) 第一次用 SSH 連到 server ( Raspberry Pi )的時候,SSH 會印出公鑰指紋碼,並詢問我是否要繼續連線,輸入yes 後,SSH 會把 server 的公鑰存到 client 端的 C:\Users\你的電腦名稱 .ssh\known_hosts 裡,下一次對相同的 Server 連線時,SSH 就不會再次詢問是否要連線。
這裡我們打上 hassio help 可以看到 hassio 提供的指令。
像是我們可以透過輸入Hassio Host Reboot
就可以重新啟動 Home Assistant。
在命令列打上 exit 或是按下 ctrl+d 就可以跳出 SSH 連接了。
今天安裝了 SSH Server 這個 Add-on,提供我們一個更安全的方式連接 Home Assistant,而明天將依賴今天安裝的SSH 為 Home Assistant 裝上 DuckDNS (一個免費提供動態 DNS 的服務),之後就可以透過外網連回家裡的 Home Assistant。