Ich vermute auch, daß Shell Command nicht auf den hinterlegten rsa key zugreift, darum scheitert auch die ssh Anmeldung am QNap NAS. Über das Terminal funktioniert es ja.
Der Schlüssel wurde bei der Erzeugung übers Terminal im Verzeichnis root abgelegt. Kann es damit zusammenhängen?
Wo läuft deine HA Installation? Bare Metal mit HAOS z. B. auf einem Raspberry? Oder virtualisiert in einer VM, Docker?
Hast du abweichend HA unter einem anderen, eingeschränkten User laufen? Wenn die RSA Keys im Verzeichnis /root liegen, HA aber unter einem anderen User läuft darf er das Verzeichnis nicht lesen.
Hast du Logs im HA geprüft, findest du da irgendwelche ssh Meldungen?
Alternativ zum direkten Aufruf des ssh Befehls könntest du dir ein Script auf OS anlegen welches den ssh Befehl absetzt und dann dieses Script als “shell_command” aufrufen.
Würde so in etwa aussehen. Du kannst auch Argumente mitgeben falls du es nicht nur für einen Host nutzen möchtest.
Edit, beim Posten gesehen dass eines meiner Scripte das macht was du vorhast, Reboot statt Shutdown. Falls du es testen willst … musst nur etwas anpassen. Läuft bei mir in Docker
#!/bin/bash
#
sshkey="/config/.ssh/id_ed25519"
sshuser="hasshcheck"
sshhost=$1
if [[ $sshhost = "docker.internal" ]]
then
sshhost=$(echo $(/sbin/ip route|awk '/default/ { print $3 }'))
#echo "dockerhost $sshhost"
fi
timeout 900 ssh "$sshuser@$sshhost" -i $sshkey -o StrictHostKeyChecking=no > /dev/null sudo /usr/sbin/shutdown -r now > /dev/null && echo 1 || echo 0
#add ssh to new server
#1) useradd -m hasshcheck
#2) ssh keys kopieren
Jo, und wenn das Schlüsselpaar nicht erreichbar ist?
Da fällt mir ein: Bei der ersten Verbindung mit ssh, wird man normalerweise gefragt, ob der Host der richtige ist. Diese Frage wirst sicherlich nicht angezeigt und daher der Schlüssel nicht an der Stelle abgelegt, wo er von shell_command gelesen werden kann.
Danke, aber das ist mir jetzt ein zu grosser Sprung, bin da noch nicht so weit mit den Befehlen
Home Assistant läuft auf einem HA Green und der User gehört zwar zur Administratoren Gruppe, hat aber keinen Systemzugriff. Könnte man den rsa key nicht in einem für Shell Command lesbaren (nicht root) Ordner speichern?
Die HA logs geben für alle Versuche den Fehler 255 aus
Error running command: `ssh -i /root/.ssh/id_rsa -q admin@192.168.1.xxx “echo mem > /sys/power/state”`, return code: 255
Annahme: Du nutzt HAOS. Wo hast du die Keys abgelegt. Console direkt am PC, oder Console im Supervisor? Wenn du HAOS nutzt läuft das intern auch als Container. Somit ist /root nicht gleich /root.
Syntax ist falsch, ssh-Befehl erlaubt keine direkte Passworteingabe (Security). Dazu musst du Tools wie sshpass nutzen.
Du meinst vermutlich die einmalige Abfrage um den Host in “known_hosts” einzutragen. Da er dass auf der Console gemacht hat sollte das schon passiert sein.
Kannst du, z. B. unter /config/ssh legen. Für dein Verständnis ist wichtig dass du im Supervisor (Container) bist und Verzeichnis ssh was anderes als .ssh (mit führendem Punkt) ist. Damit du .ssh siehst brauchst du den Befehl ls -la. Stansdard für ssh ist /root/.ssh …