KI sicher für HAOS nutzen — Vom ersten SSH-Key bis zum sicheren Agent-Zugriff

Die letzten Tage ist hier ja richtig Stimmung was KI angeht. Als selbstständiger Berater, der auch zum Thema sichere KI-Nutzung arbeitet, möchte ich „KI ist böse, nicht benutzen“ nicht einfach so stehen lassen — sondern zeigen wie man KI richtig einsetzt. Auch und gerade um HAOS aufzuräumen, zu optimieren und sicherer zu machen.

Nur weil es Filme gibt die KI dramatisch beleuchten, müssen wir das Thema nicht ignorieren. Wir müssen lernen damit umzugehen — jeder in dem Maß wie er es selbst benötigt und verantworten kann.

Ihr könnt auch einen Agent via VS Code, ClaudeCode, etc nutzen um das Repo herunterzuladen und einzurichten. Der agent wird Euch eine Schritt für Schritt Anleitung geben wie die ersten Keys anzulegen sind und euch auch alles so einrichten, dass ihr es direkt benutzen könnt, sofern ihr das wollt.
Der Clou: wenn alles eingerichtet ist nutzt ihr das Script um direkt neue Keys zu generieren:

Dieses Script ist in Python geschrieben, aber… Python ist nicht böse. Eine einzelne kompromittierte Bibliothek (litellm 1.82.7/1.82.8) ist aktuell ein Problem — nicht die Sprache.

Das ist so als würde man Autos verbieten weil ein bestimmtes Reifenmodell einen Rückruf hatte. Das Script in diesem Post hat null Abhängigkeiten zu LiteLLM — ihr könnt es selbst lesen und verifizieren.


Das Grundproblem

Wenn ein KI-Agent (Claude Code, Gemini, Kimi, egal welcher) SSH-Zugriff auf HAOS bekommt, hinterlässt er einen Key, der als kompromittiert anzusehen ist. Dieser Key bleibt aktiv — auch nach der Session. Das ist der eigentliche Risikopunkt, nicht die KI selbst.

Die Lösung: Key-Rotation. Nach jeder Agent-Session wird der Key automatisch ausgetauscht. Der alte Key wird ungültig, ein neuer wird generiert. Vollautomatisch.

Oder anders… Der Agent bekommt einen Schlüssel, er geht rein, macht seine Arbeit und sobald er raus ist wird das Schloss mit samt Schlüssel automatisch per Skript ausgetauscht.


Zwei-Key-Strategie

Key Zweck Wer hat ihn
Admin-Key Manueller Zugriff, Notfälle Nur du — nie an Agents
Agent-Key Temporär, pro Session Wird nach jeder KI-Session rotiert

Der Admin-Key ist der Fallback. Der Agent-Key ist das was rotiert wird. (das Script kann aber auch den Admin-Key rotieren)


Schritt 1: SSH Add-on installieren (in HomeAssistant)

HAOS → Einstellungen → Add-ons → Advanced SSH & Web Terminal installieren und starten.

In der Add-on Konfiguration den authorized_keys Button merken — dort kommen später die Public Keys rein.


Schritt 2: Projektordner anlegen

Auf dem Entwicklungsrechner (Linux/Mac/Windows mit WSL):

mkdir -p ~/Projekte/HAOS/ssh_keys
chmod 700 ~/Projekte/HAOS/ssh_keys

Sofort in .gitignore eintragen:

ssh_keys/
.env

Schritt 3: Zwei SSH-Keys generieren

# Admin-Key (dauerhaft, nur für dich)
ssh-keygen -t ed25519 -C "ha-admin" \
  -f ~/Projekte/HAOS/ssh_keys/id_ed25519_admin

# Agent-Key (temporär, wird nach jeder KI-Session rotiert)
ssh-keygen -t ed25519 -C "ha-agent" \
  -f ~/Projekte/HAOS/ssh_keys/id_ed25519_agent

Passphrase bei beiden: leer lassen (zweimal Enter drücken). Der Schutz kommt durch Rotation, nicht durch Passphrase.


Schritt 4: Public Keys in HAOS hinterlegen

# Ausgabe-Beispiel — euer Key sieht anders aus:
# ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ha-admin
cat ~/Projekte/HAOS/ssh_keys/id_ed25519_admin.pub
cat ~/Projekte/HAOS/ssh_keys/id_ed25519_agent.pub

Beide Ausgaben (je eine lange Zeile) in das authorized_keys Feld im Advanced SSH Add-on eintragen. Speichern → Add-on neu starten.


Schritt 5: Verbindung testen

# YOUR_HAOS_IP ersetzen durch eure IP (z.B. 192.168.1.100)

# Admin-Key testen
ssh -i ~/Projekte/HAOS/ssh_keys/id_ed25519_admin -p 22 root@YOUR_HAOS_IP

# Agent-Key testen
ssh -i ~/Projekte/HAOS/ssh_keys/id_ed25519_agent -p 22 root@YOUR_HAOS_IP

Eure HAOS IP findet ihr unter: HAOS → Einstellungen → System → Netzwerk


Schritt 6: .env Datei anlegen

cp .env.example .env
nano .env

Nie in Git committen. Nie an Agents weitergeben.


Schritt 7: Komfort-Aliases einrichten

In ~/.bashrc oder ~/.zshrc:

# Direkter SSH-Login auf HAOS (nur für euch, nicht für Agents)
alias haos='ssh -i ~/Projekte/HAOS/ssh_keys/id_ed25519_admin -p 22 root@YOUR_HAOS_IP'

# Key-Rotation nach jeder KI-Session
alias rotate-agent-key='python3 ~/Projekte/HAOS/scripts/rotate_agent_key.py'

# Admin-Key rotieren (nur wenn nötig)
alias rotate-admin-key='python3 ~/Projekte/HAOS/scripts/rotate_agent_key.py --key-file ~/Projekte/HAOS/ssh_keys/id_ed25519_admin'

Danach: source ~/.bashrc


Schritt 8: Dem Agenten Grenzen setzen

Eine agents.md im Projektordner anlegen — die Vorlage liegt im GitHub Repo unter templates/agents.md:

cp templates/agents.md ./agents.md

Diese Datei wird von jedem KI-Agenten automatisch gelesen wenn er den Ordner als Kontext bekommt. Das ist kein Vertrauen — das ist Scope-Definition. Genau wie man einem Handwerker sagt welche Räume er betreten darf. Das funktioniert weil die Agents genau darauf ausgelegt sind um Effizienz zu gewährleisten.


Das Rotation-Script

Nach jeder KI-Session einfach:

rotate-agent-key

Was passiert:

  1. Neues Keypaar generieren
  2. Mit altem Key neuen auf HAOS hinterlegen
  3. Verbindungstest mit neuem Key
  4. Nur wenn Test erfolgreich: Alten Key aus HAOS entfernen
  5. Alte Key-Dateien lokal löschen
  6. .env automatisch aktualisieren

Wenn Schritt 3 fehlschlägt: Abbruch. Alter Key noch aktiv. Ihr sitzt nie draußen.

Das komplette Script und alle Vorlagen: GitHub → HAOS key rotation repo


Womit anfangen?

Meine aktuelle Empfehlung für den Einstieg:

  • Claude Pro (~20€/Monat) — aktuell der zuverlässigste Weg für sichere, nachvollziehbare Ergebnisse ohne böse Überraschungen
  • OpenCode Go (~10€/Monat) als zweite Instanz — mit Kimi implementieren, Claude prüfen lassen. Zwei unabhängige Modelle die denselben Code reviewen reduzieren das Fehlerrisiko dramatisch

Alternativen, wenn eh schon vorhanden:

  • ChatGTP/Codex anstatt Claude würde auch gut gehen, kommt mir aber aus politischen Gründen derzeit nicht in Frage
  • Gemini ist gut zum Webseiten bauen - Nutzt es für HAOS nur wenn ihr ein geschenktes Abo habt.

Das ist kein Sponsoring — das ist was ich selbst nutze und für mich funktioniert.


Fragen, Ergänzungen, Kritik — gerne. Nur bitte mit Argumenten. :grinning_face_with_smiling_eyes:

Hier steckt mit Dokumentation und Veröffentlichung über 1 Tag Arbeit drin. Mein Job ist es eigentlich interne Prozesse zu optimieren, DAS HIER mit eigenem GitHub-Repo ist neu für mich. Über konstruktive Ideen freue ich mich :slight_smile:

Teil 2 folgt: Credential-Management, Backup-Strategie und wie man seinen HAOS-Agenten vollständig absichert.

Hier als Antwort auf meinen ersten Teil, die Fortführung um es später auch gut verlinken zu können.

KI und HAOS — finde deinen Einstiegspunkt

Nach meinem ersten Post zum Thema sichere SSH-Verbindung kamen einige Fragen: “Wo fange ich überhaupt an?” Gute Frage. Nicht jeder braucht sofort eine IDE und ein Rotationsscript. Hier sind drei Einstiegspunkte — von vorsichtig bis vollständig.


Stufe 1 — Total defensiv: KI als Berater, du als Pilot

Du gibst der KI nichts. Sie sieht keine Dateien, hat keinen Zugriff. Du fragst, sie erklärt, du entscheidest und handelst selbst.

Wofür: Automationen verstehen, YAML-Syntax erklären lassen, Fehler debuggen, Ideen entwickeln.

Umgebung: Claude.ai Weboberäche oder App — kein Setup nötig.

Start-Prompt für die Weboberäche:

Du bist mein Home Assistant Assistent. Ich nutze Home Assistant OS.
Du hast keinen Zugriff auf mein System — ich zeige dir nur Ausschnitte
die ich manuell reinkopiere.

Halte dich an diese Regeln:
- Syntax immer nach aktueller HA-Dokumentation (https://www.home-assistant.io/docs/)
- Erkläre jeden Schritt bevor du Code vorschlägst
- Weise mich auf mögliche Nebenwirkungen hin
- Frage nach wenn dir Kontext fehlt

Meine HA-Version: [deine Version]
Mein Setup: [kurze Beschreibung, z.B. "Shellies, ESPHome, Zigbee2MQTT"]

Ablauf:

  1. Prompt einmal setzen (als erstes in jedem neuen Chat oder als Projektanweisung)
  2. YAML-Ausschnitt reinkopieren wenn nötig
  3. Vorschlag prüfen, verstehen, selbst in HA einspielen
  4. Fertig

Stufe 2 — Defensiv: Lokale Kopie, KI bearbeitet, du spielst ein

Du kopierst deine YAML-Dateien auf deinen Rechner. Die KI bearbeitet die Kopien. Du prüfst das Ergebnis und spielst es selbst wieder ein.

Wofür: Größere Umbauten, Automationen refactoren, viele Dateien auf einmal überarbeiten.

Umgebung: VS Code lokal + Claude-Extension oder Claude.ai Projekte.

Start-Prompt (VS Code mit IDE oder Claude Projekte):

Du bist mein Home Assistant Konfigurations-Assistent.
Du arbeitest ausschließlich in diesem Verzeichnis: [Pfad zu deiner lokalen HAOS-Kopie]

Regeln die immer gelten:
- Keine Credentials, Passwörter oder API-Keys in YAML-Dateien eintragen
  – Platzhalter wie !secret mein_passwort verwenden
- Syntax nach aktueller HA-Dokumentation (https://www.home-assistant.io/docs/)
- Vor jeder Änderung: erkläre was du änderst und warum
- Keine Dateien außerhalb dieses Verzeichnisses lesen oder ändern
- Nach Änderungen: zeige mir eine Zusammenfassung was geändert wurde

Meine HA-Version: [deine Version]
Mein Setup: [kurze Beschreibung]

Ablauf:

  1. YAML-Dateien lokal kopieren (nicht das Original überschreiben)
  2. Prompt setzen
  3. KI ändert lokale Kopien
  4. Du prüfst die Änderungen
  5. Du spielst selbst ein (Datei zurückkopieren oder über HA-UI)
  6. ha core check vor dem Neustart

Stufe 2.5 — HA REST API: Lesen ohne SSH

Die offizielle HA API erlaubt der KI Sensor-Zustände und Konfigurationen zu lesen — ohne SSH, ohne Dateizugriff.

Wofür: Wenn du der KI echte Live-Daten zeigen willst ohne SSH-Zugriff zu geben.

Token erstellen: HA → Profil → Langlebige Zugriffstoken → Token erstellen
Den Token nur für diese Sitzung nutzen, danach widerrufen.

Was die KI darf: Sensor-States lesen, Automationen lesen
Was sie nicht darf: Dateien schreiben, SSH, Secrets lesen

Im Prompt angeben:

Du hast Lesezugriff auf meine HA REST API: http://[IP]:8123
Token: [dein Token — nur für diese Session]
Du darfst NUR lesen. Keine Schreiboperationen. Keine SSH-Befehle.
Nach dieser Session widerrufe ich den Token.

Stufe 3 — Offensiv: SSH mit Sicherheitsnetz

Voller Zugriff — aber mit klaren Regeln, Rotation und Backup-Pflicht.
Details dazu in meinem ersten Post: Siehe erster Beitrag ganz oben!

Kurz zusammengefasst:

  • Zwei SSH-Keys (Admin bleibt bei dir, Agent-Key rotiert)
  • agents.md definiert was tabu ist
  • Backup vor jeder Session
  • rotate-agent-key nach jeder Session

Start-Prompt (nach /init oder manuell):

Lies zuerst agents.md in diesem Verzeichnis.
Dann: lies README_HA_AGENT_ACCESS.md.

Erste Aufgabe: [deine Aufgabe]

Alles weitere ist im GitHub Repo dokumentiert:


Welche Stufe passt zu mir?

Stufe 1 Stufe 2 Stufe 2.5 Stufe 3
KI sieht meine Dateien Nein Ja (Kopie) Nein Ja (live)
KI schreibt direkt Nein Nein Nein Ja
Setup-Aufwand Keiner Gering Gering Mittel
Für wen Alle Fortgeschrittene Neugierige Erfahrene

Fangen viele mit Stufe 1 an und merken nach ein paar Wochen dass Stufe 2 bequemer ist. Stufe 3 kommt wenn man das System wirklich kennt.

Fragen, Erfahrungen, andere Ansätze — gerne! :grinning_face_with_smiling_eyes:

Teil 3 folgt: Der Security Skill — automatisierte Sicherheitsprüfung für euren HAOS-Stack.

3 „Gefällt mir“