Viele Wege führen zum SSH-Zugang des Home Assistant (OS). Hierbei muss beachten, dass es zwei Ziele für eine SSH-Verbindung gibt:
Anmerkung: Wird Home Assistant als Docker Container in einer Linux Umgebung ausgeführt, ist es nicht notwendig einen SSH-Zugang zu konfigurieren. Bei dieser Installationsweise nutzt man den SSH-Zugang zum darunterliegenden Linux Betriebssystems und kann darüber die Konfigurationsdateien von Home Assistant erreichen.
Meine Anleitung beruht auf einer Home Assistant OS installation in einer Virtuellen Maschine. Die virtuelle Maschine läuft in einer VirtualBox V 7.1.4 ohne Benutzeroberfläche (headless) und auf einem Debian Bullseye Server ohne Desktop Environment.
Die Schritte zur Konfiguration eines SSH-Zugangs sind für virtuelle Maschinen, Computer und den Home Assistant Green identisch. Für eine virtuelle Maschine muss zusätzlich eine Verbindung von einem USB-Stick zur Virtuellen Maschine eingerichtet werden. Die hierfür notwendigen Schritte sind bei den andern Installationsvarianten zu überspringen.
Advanced SSH & Web Terminal Add-on
VirtualBox: USB-Stick mit der Virtuellen Maschine verbinden
Beim Betrieb des Home Assistant in einer Home Assistant OS Umgebung oder einem Home Assistant Green/Yellow wird man um die Verwendung des „Home Assistant Advanced SSH & Web Terminal Add-on“ kaum herumkommen. Es stellt ein Terminal in der Home Assistant GUI bereit.
Der externe SSH-Zugang über einen SSH-Client bietet jedoch kaum Vorteile, außer vielleicht die Verwendung eines gewohnten Terminalprogramms. Eine SSH-Verbindung von Visual Studio Code, um die Konfigurationsdateien zu editieren, konnte ich über keinen externen SSH-Zugang herstellen.
Um die Konfigurationsdateien über einen externen Editor wie Notepad++ oder Visual Studio Code zu editieren kann das Samba Add-on verwendet werden. Zum editieren innerhalb der Home Assistant GUI bietet sich das Studio Code Server Add-on an.
Bleibt also nur den SSH-Zugang für einen eventuellen Notfall bereit zu stellen.
Allen SSH-Zugängen gemein ist die Anmeldung als Benutzer „root“. Da dieser Benutzer Herr im Haus ist kann er einiges anstellen und das System beliebig zerstören!
Insbesondere beim Home Assistant OS kann das fatale Folgen haben! Daher ist gut zu überlegen ob ein SSH-Zugang überhaupt eingerichtet werden soll und wenn, sollte er gut abgesichert sein! Ein Passphrase für den privaten Schlüssel sollte Standard sein!
Dies ist eine erweiterte Version des von Home Assistant bereitgestellten SSH-Add-ons.
Es stellt einen SSH-Server bereit, der auf OpenSSH basiert. Es ist zusätzlich ein Befehlszeilentool enthalten, mit dem du beispielsweise deine Instanz neu starten, aktualisieren und überprüfen kannst.
Die Installation erfolgt wie üblich unter Einstellungen – Add-ons. Hierzu sucht man mit dem Button „ADD-ON-STORE“ unten rechts:
Nach „Advanced SSH & Web Terminal“:
Nach der Auswahl des Buttons „Advanced SSH & Web Terminal“, wird das Terminal mit „INSTALLIEREN“ installiert:
Nach der Installation die folgenden drei Optionen aktivieren:
Der Zugang muss nun noch konfiguriert werden. Hierzu wird auf den Reiter „Konfiguration“ gewechselt:
In den folgenden Optionen müssen Anpassungen vorgenommen werden:
username | Der vorgegebene Benutzer „hassio“ kann übernommen werden. Je nach Gusto kann aber auch ein anderer vergeben werden. |
---|---|
password | Ja, kann vergeben werden – aber nur zu Testzwecken. Es ist sicherer ein Schlüsselpaar zu verwenden |
authorized_keys | Hier wird der öffentliche Schlüssel eines oder mehrerer Schlüsselpaare eingetragen |
Hier sind die Beschreibungen wie unter Linux und Windows (PuTTY) ein Schlüsselpaar erstellt wird:
Im Anschluss wird die Konfiguration mit dem Button „SPEICHERN“, unten rechts unter im Optionsfeld, gespeichert:
Zurück auf der Registerkarte „Informationen“ kann mit dem Button „STARTEN“ das Teminal, und damit der SSH-Zugang gestartet werden:
Über das Seitenmenü „Terminal“ wird das Terminal aufgerufen.
Bitte beachten: Du bist nun Root-User in der Home Assistant Anwendung!
Die Konfiguration des Linux Client ist schnell erledigt. Im Verzeichnis des jeweiligen Linux Users liegt im Verzeichnis „.ssh“ die Datei „config“. Ist diese nicht vorhanden kann sie einfach angelegt werden.
Hier wird das folgende eingegeben:
Host <Name des Home Assistant>
HostName <IP-Adresse des Home Assistant>
User hassio
IdentityFile ~/.ssh/<Dateiname des privaten Schlüssels>
RemoteCommand sudo -i
Host | Ein Name für den Home Assistant |
---|---|
HostName | Der Servername oder die IP-Adresse des Home assistant |
User | Der SSH-Benutzer (hier der default Benutzer) |
IdentityFile | Der Dateiname des privaten Schlüssels |
RemoteCommand | „sudo -i“ damit der SSH-Benutzer zum Root-Benutzer wird |
Dann kann eine SSH-Verbindung hergestellt werden:
ssh <Name des Home Assistant>
Die Konfiguration einer PuTTY-Sitzung ebenfalls keine Hexerei und braucht wenig Zeit. Die folgenden Bilder führen durch die Konfiguration.
Im Abschnitt „Session“ werden die folgenden Werte eingetragen:
Host Name (or IP address) | Der Servername oder die IP-Adresse des Home Assistant |
---|---|
Saved Sessions | Ein Name für die Home Assistant Verbindung |
Abschnitt „Data“:
Auto-login username | Der SSH-Benutzer (hier der default Benutzer) |
---|
Abschnitt „SSH“:
Remote command | „sudo -i“ damit der SSH-Benutzer zum Root-Benutzer wird |
---|
Abschnitt „Auth“:
Private key file for authentictation | Der Dateiname des privaten PuTTY-Schlüssels |
---|
Zurück zum Abschnitt „Sessions“ die Verbindung mit dem Button „Save“ speichern.
Der SSH-Zugang zum Home Assistant OS kann nur über einen USB-Stick eingerichtet werden. Eine Einrichtung über die Oberfläche ist nicht möglich.
Damit der USB-Stick erkannt und gelesen werden kann muss er zwingend eine Partition mit dem Namen „CONFIG“ (alles in Großbuchstaben) und der Formatierung FAT, ext4, oder NTFS haben.
Auf diesem USB-Stick wird nun eine Datei mit dem Namen „authorized_keys“ (alles in Kleinbuchstaben) angelegt.
Die Datei muss POSIX-Standard-Zeilenumbruch-Steuerzeichen (LF) verwenden, keine Windows-Zeichen (CR LF) und muss ASCII-Zeichenkodierung sein (d.h. sie darf keine Sonderzeichen in den Kommentaren enthalten).
Die Anleitung, wie man einen USB-Stick mit einer Virtuellen Maschine, in einer VirtualBox ohne GUI verbindet findest Du hier:
Headless VB: USB-Port für Virtuelle Maschine bereitstellen
Dieser Schritt ist nur bei einer Virtuellen Maschine notwendig, bei allen anderen reicht es den USB-Stick anzuschließen.
Laut der originalen Anleitung sollte es ausreichen den USB-Stick anzuschließen und das Home Assistant OS neu zu starten. Bei mir hat das leider nicht funktioniert.
Ich habe über das Home Assistant Advanced SSH & Web Terminal Add-on eine SSH-Sitzung geöffnet und den USB-Stick mit dem folgenden Befehl eingelesen:
ha os import
Die Konfiguration des Linux Client ist schnell erledigt. Im Verzeichnis des jeweiligen Linux Users liegt im Verzeichnis „.ssh“ die Datei „config“. Ist diese nicht vorhanden kann sie einfach angelegt werden.
Hier wird das folgende eingegeben:
Host <Name des Home Assistant>
HostName <IP-Adresse des Home Assistant>
User root
IdentityFile ~/.ssh/<Dateiname des privaten Schlüssels>
Port 22222
Host | Ein Name für den Home Assistant |
---|---|
HostName | Der Servername oder die IP-Adresse des Home assistant |
User | Der Root-Benutzer) |
IdentityFile | Der Dateiname des privaten Schlüssels |
Port | Für den SSH-Zugang zum Betriebssystem ist der Port 22222 vorgesehen |
Dann kann eine SSH-Verbindung hergestellt werden:
ssh <Name des Home Assistant>
Die Konfiguration einer PuTTY-Sitzung ebenfalls keine Hexerei und braucht wenig Zeit. Die folgenden Bilder führen durch die Konfiguration.
Im Abschnitt „Session“ werden die folgenden Werte eingetragen:
Host Name (or IP address) | Der Servername oder die IP-Adresse des Home Assistant |
---|---|
Port | Für den SSH-Zugang zum Betriebssystem ist der Port 22222 vorgesehen |
Saved Sessions | Ein Name für die Home Assistant Verbindung |
Abschnitt „Data“:
Auto-login username | Der Root-Benutzer |
---|
Abschnitt „Auth“:
Private key file for authentictation | Der Dateiname des privaten PuTTY-Schlüssels |
---|
Zurück zum Abschnitt „Sessions“ die Verbindung mit dem Button „Save“ speichern.