找回密碼
 立即註冊
    查看: 148|回覆: 0

    【ESPHome 實作】安全設定逐項修:加密金鑰、OTA 兩階段遷移、與預設沒開的那幾個

    [複製鏈接]

    !lvup!   100%

    386

    主題

    27

    回帖

    2200萬

    積分

    管理員

    積分
    22006063
    發表於 2026-9-21 13:14:47 | 顯示全部樓層 |閱讀模式
    這篇給你一份「改之前」的設定檔和一份「改之後」的設定檔,中間十個編號步驟,每一步都有驗證方法。

    每一步都有「你會看到什麼」。做完第三步能自己確認第三步成功了,才走第四步。

    這篇給你一份「改之前」的設定檔和一份「改之後」的設定檔,中間十個編號步驟,每一步都有驗證方法。

    先看一份很常見、但不安全的設定檔

    下面這份是網路上 2023 年前後的教學最常見的寫法。它現在連編譯都不會過,但更重要的是:就算改到能編譯,它還有五個問題。
    1. # ===== 改之前(不要照抄,這是反面教材)=====
    2. esphome:
    3.   name: livingroom-switch
    4. esp32:
    5.   board: esp32dev
    6. logger:
    7.   level: DEBUG
    8. api:
    9.   password: "mypassword123"
    10. ota:
    11.   password: "mypassword123"
    12. wifi:
    13.   ssid: "MyHome"
    14.   password: "wifi12345678"
    15.   ap:
    16.     ssid: "Livingroom Fallback"
    17. web_server:
    18.   port: 80
    19. switch:
    20.   - platform: gpio
    21.     pin: GPIO12
    22.     name: "客廳燈"
    複製代碼

    它的問題(每一個後面都有對應的步驟)


    • `api: password:` 這個選項已經在 ESPHome 2026.1.0 被整個移除,編譯會直接被擋下來(第二步)
    • Wi-Fi 密碼和裝置密碼直接寫在設定檔裡 —— 這份檔案你一旦貼到論壇問問題、或推到 GitHub,密碼就公開了(第一步)
    • `ap:` 底下沒有 `password:` —— 連不上 Wi-Fi 時它會開一個完全開放的熱點,路過的人連上去就能改你的 Wi-Fi 設定(第五步)
    • `web_server:` 沒有 `auth:` —— 同網段的任何人打開瀏覽器就能按你的開關(第六步)
    • `logger: level: DEBUG` 配上 api —— 除錯資訊會印出比你想像中更多的東西(第七步)


    這篇最後會給你一份改好的完整設定檔。先跟著做十個步驟。

    ---

    第一步:把所有祕密搬進 secrets.yaml

    在 Home Assistant 的「檔案編輯器」或 Studio Code Server 裡開啟 /config/esphome/secrets.yaml(沒有就新建):
    1. # /config/esphome/secrets.yaml
    2. wifi_ssid: "MyHome-IoT"
    3. wifi_password: "你家的Wi-Fi密碼"
    4. ap_password: "至少八碼的備援熱點密碼"
    5. # 每台裝置一把,下一步產生
    6. api_key_livingroom: "先留空"
    7. # 網頁介面(第六步才會用到)
    8. web_username: "admin"
    9. web_password: "一個夠長的密碼"
    複製代碼

    然後在設定檔裡用 `!secret 鍵名` 引用。

    為什麼一定要這樣

    ESPHome 的設定檔是你最常拿出來分享的東西 —— 貼到論壇問問題、推到 GitHub 備份、傳給朋友照抄。`!secret` 讓你可以整份貼出去而不洩漏任何密碼,因為那些值不在檔案裡。

    你會看到什麼:把設定檔裡的 `password: "wifi12345678"` 改成 `password: !secret wifi_password` 之後,編譯應該完全正常。

    編譯時出現 `Secret 'wifi_password' not defined` → secrets.yaml 裡沒有這個鍵,或是檔案放錯位置(必須跟你的裝置 yaml 在同一個 `/config/esphome/` 目錄下)。

    ⚠ 如果你有把 /config 推到 Git,在 `/config/.gitignore` 裡加一行:
    1. esphome/secrets.yaml
    複製代碼

    驗證:在終端機跑 `git status`,`secrets.yaml` 不應該出現在待提交清單裡。如果它之前已經被提交過,光加 .gitignore 沒用 —— 歷史紀錄裡還有,要把那些密碼全部換掉。

    ---

    第二步:產生 API 加密金鑰(這是必填,不是選配)

    先講一件最重要的事:ESPHome 2026.1.0 已經把 `api:` 底下的 `password:` 選項整個移除了。

    抄 2023 年教學寫 `api: password: xxx` 的話,編譯會停在:
    1. The 'password' option has been removed in ESPHome 2026.1.0.
    2. Password authentication was deprecated in May 2022.
    複製代碼

    這是好事 —— 它會出錯,所以你一定會發現。真正危險的是「能編譯、能跑、但其實沒保護」的那種。

    以下還有約 80% 的內容
    登入後即可閱讀完整教學

    登入繼續閱讀使用 Google 登入
    您需要登入後纔可以回帖 登入 | 立即註冊

    本版積分規則

    延伸閱讀

    加入惟家 LINE 群 QR Code加入惟家 LINE 群

    Archiver|手機版|惟家的智能論壇

    GMT+8, 2026-11-10 00:35 , Processed in 0.129167 second(s), 25 queries .

    快速回覆 返回頂部 返回列表