SSH-Zugang (Zugänge) zum Home Assistant (OS)

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.

Inhalt

Sinn und Zweck

Eindringliche Warnung

Advanced SSH & Web Terminal Add-on

    Installation

    Konfiguration

    Konfiguration Linux Client

    Konfiguration PuTTY

SSH zum Home Assistant OS

    USB-Stick vorbereiten

    VirtualBox: USB-Stick mit der Virtuellen Maschine verbinden

    USB-Stick einlesen

    Konfiguration Linux Client

    Konfiguration PuTTY

Sinn und Zweck

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.

Eindringliche Warnung

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!

Advanced SSH & Web Terminal Add-on

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.

Installation

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:

Konfiguration

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!

Konfiguration Linux Client

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>

Konfiguration PuTTY

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.

SSH zum Home Assistant OS

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.

USB-Stick vorbereiten

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).

VirtualBox headless: USB-Stick mit der Virtuellen Maschine verbinden

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.

USB-Stick einlesen

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

Konfiguration Linux Client

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>

Konfiguration PuTTY

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.