SSH-Zugriff von HA auf anderen PC funktioniert nur im Terminal

Hallo zusammen,

ich möchte per SSH aus HA per automation Befehle auf einem PC ausführen. Hierzu habe ich die entsprechenden Keys erzeugt und abgelegt.

Im HA-Terminal funktioniert der Zugriff ohne PSW-Eingabe problemlos.

ssh -i /config/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan

Wenn ich das ssh-Kommando per Command-line absetze, bekomme ich die Fehlermeldung:

Host key verification failed.
2025-09-26 19:39:46.088 ERROR (MainThread) [homeassistant.components.command_line] Command failed (with return code 255): ssh -i /config/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan shutdown /s /t 120
2025-09-26 19:39:46.088 ERROR (MainThread) [homeassistant.components.command_line] Command failed: ssh -i /config/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan shutdown /s /t 120

Wer hat noch einen Tipp für mich?

HA OS läuft bei mir unter Proxmox.

Viele Grüße
Jürgen

Moin,

als welcher User wird der Befehl ausgeführt, das ist dann vielleicht ein anderer als der User, der ihn im Terminal ausführt und somit auf den Schlüssel nicht zugreifen kann.

Wenn Du mal noch ein paar verboses anhängst kommt etwas mehr output

ssh -vvv -i /config/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan shutdown /s /t 120

VG
Bernd

Hallo Bernd,

danke mit dem Tipp (-vvv). Allerdings verwirrt mich das Ergebnis noch mehr :see_no_evil_monkey:

Hier die Infos aus dem Logfile, die ich nicht verstehe bzw. wie ich sie interpretiere:

debug3: expanded UserKnownHostsFile ‘\~/.ssh/known_hosts’ → ‘/root/.ssh/known_hosts’debug3: expanded UserKnownHostsFile ‘\~/.ssh/known_hosts2’ → ‘/root/.ssh/known_hosts2’

Dies bedeutet für mich, dass die Comman-line mit dem User “root” ausgeführt wird. Ich bin in HA mit “jh” angemeldet

debug1: load_hostkeys: fopen /root/.ssh/known_hosts: No such file or directory

Dies kann ich nicht nachvollziehen.

> ➜  \~ cd /root/.ssh/
> ➜  .ssh ls -l
> total 16
> -rw-r–r--    1 root     root           130 Sep 26 21:00 environment
> -rw-------    1 root     root           660 Sep 26 21:18 known_hosts
> -rw-------    1 root     root           755 Sep 26 17:45 known_hosts.alt
> -rw-r–r--    1 root     root            94 Sep 26 21:13 known_hosts.old
> ➜  .ssh

> debug1: SSH2_MSG_KEX_ECDH_REPLY received
> debug1: Server host key: ssh-ed25519 SHA256:xzHnMN7GjVEUQEGaiiIP5/qjIyt07w/Hpxjnyj8X3hA
> debug1: load_hostkeys: fopen /root/.ssh/known_hosts: No such file or directory
> debug1: load_hostkeys: fopen /root/.ssh/known_hosts2: No such file or directory
> debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
> debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
> debug3: hostkeys_find_by_key_hostfile: trying user hostfile “/root/.ssh/known_hosts”
> debug1: hostkeys_find_by_key_hostfile: hostkeys file /root/.ssh/known_hosts does not exist
> debug3: hostkeys_find_by_key_hostfile: trying user hostfile “/root/.ssh/known_hosts2”
> debug1: hostkeys_find_by_key_hostfile: hostkeys file /root/.ssh/known_hosts2 does not exist
> debug3: hostkeys_find_by_key_hostfile: trying system hostfile “/etc/ssh/ssh_known_hosts”
> debug1: hostkeys_find_by_key_hostfile: hostkeys file /etc/ssh/ssh_known_hosts does not exist
> debug3: hostkeys_find_by_key_hostfile: trying system hostfile “/etc/ssh/ssh_known_hosts2”
> debug1: hostkeys_find_by_key_hostfile: hostkeys file /etc/ssh/ssh_known_hosts2 does not exist
> debug1: read_passphrase: can’t open /dev/tty: No such device or address
> Host key verification failed.

Das System scheint also die Datei “known_hosts” nicht zu finden.

Sie ist aber definitiv vorhanden. Was nun?

Viele Grüße
Jürgen

:crayon:by HarryP: Code-/Logzeilen formatiert (bitte immer in </> einbinden)
s.a.: (Neues Update & Features - Hier in der Community 🫶)

Moin,

was, dass Du als normaler User nicht auf den Root zugreifen kannst, das ist halt UNIX :wink:

Du darfst halt nicht auf Dateien, schon gar nicht auf Sicherheitsdateien, wie ssh Dateien als normaler User zugreifen,

Wie man hier erkennt, das die Files nur durch den User root Read / Write sind, auch die Gruppe root hat keinen zugriff!

Doch aber Du als User jh darfst da nicht hineinschauen und schon gar nicht die Dateien vom root nutzen!
Wenn Du im Terminal das machst

  Home Assistant URL:       http://homeassistant.local:8123
  Observer URL:             http://homeassistant.local:4357

System is ready! Use browser or app to configure.
➜  ~ id                        
uid=0(root) gid=0(root) groups=0(root),0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
➜  ~ 

Siehst Du das dort der root aktiv ist, ich bin aber auch als Admin angemeldet.

Zum einen, gibt es das Verzeichnis /config/.ssh/ nicht,

# ssh -i /config/.ssh/id_ed25519_TC_TP ...

Zu dem ist dieses Verzeichniss

/root/.ssh/

auch nur ein Link zu

➜  ~ ls -la /data/.ssh 

ist.

Also ich würde es dann, mal so probieren.

ssh -vvv -i /data/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan shutdown /s /t 120

VG
Bernd

Hallo Bernd,

warum wird dann das “Home-Verzeichnis” so aufgelöst?

</>debug3: expanded UserKnownHostsFile ‘\~/.ssh/known_hosts’ → ‘/root/.ssh/known_hosts’ </>

Die Datei id_ed25519_TC_TP wird ja gefunden, aber nicht “known_hosts”.

Ich teste jetzt aber trotzdem mit “/data/” anstatt “/config/”

Einen User “jh” gibt es auf Debian-Ebene nicht. Das habe ich schon geprüft.

Viele Grüße
Jürgen

Moin,

Ja, weil das Userkonzept in HA nichts mit dem vom Debian zu tun hat, das sind zwei völlig unterschiedliche Dinge.

VG
Bernd

Hallo Bernd,

wie bereits vermutet kommen auch mit /data/… die gleichen Fehlemeldungen. Die Datei d_ed25519_TC_TP wird auf allen Wegen gefunden. Es geht aus meiner Sicht ausschließlich um die Datei host_keys, die nicht gefunden wird.

Hast Du noch eine Idee?

Viele Grüße
Jürgen

Moin,

nein, ich müsste das auch erst einmal versuchen nachzustellen.

VG
Bernd

Ich bin kein linux Experte, aber bei der Verwendung von ssh keys gibt Du den user doch nicht mehr an?

So frage ich in Home Assistant die ZigBee2MQTT Version ab. Diese läuft auf einen anderen Host bzw. als LXC in Proxmox.

command: "ssh -i /config/.ssh/id_ha_proxmox -o 'StrictHostKeyChecking=no' 192.168.178.213 'npm show zigbee2mqtt version'"

oder ein anderes Bsp. für die Abfrage der CPU Temperatur:

 command: "ssh -i /config/.ssh/id_ha_proxmox -o 'StrictHostKeyChecking=no' 192.168.178.200 'cat /sys/class/thermal/thermal_zone1/temp'"

Gruß Osorkon

Hi Osorkon,

der User ist hier zwingend notwendig. Das Problem ist aus meiner Sicht der fehlende Zugriff auf die Datei host_keys.

Gruß
Jürgen

Das wäre super.

Viele Grüße
Jürgen

Hallo Bernd,

wenn ich vom PC direkt die IP-Adresse angebe, funktioniert es. Mit dem DNS-Name funktioniert es nicht, obwohl in der Datei “host_keys” beide Einträge vorhanden sind.

ssh -i /config/.ssh/id_ed25519_TC_TP shutdown-user@thinkpad.lan

geht nicht

ssh -i /config/.ssh/id_ed25519_TC_TP shutdown-user@192.168.101.1

geht.

Ist zwar nicht schön, aber es funktioniert.
Viele Grüße
Jürgen