Node-Red kann meinen SSH-Schlüssel nicht lesen (in /home/pi/.ssh/id_rsa)

Hallo zusammen
Ich versuche, Kodi mit Gladys über Node-red per SSH zu steuern.
Dazu habe ich einen SSH-Schlüssel auf dem Raspberry Pi von Gladys erstellt, und dieser Schlüssel befindet sich an folgender Stelle
/home/pi/.ssh/id_rsa

Allerdings kann Node-red nicht auf diese Datei zugreifen.
Im Internet habe ich Folgendes gefunden

  1. Element

Das folgende künstliche Beispiel zeigt, wie ein privater Schlüssel auf der Host-Maschine von einem Container aus gelesen werden kann.

docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro ubuntu cat /root/.ssh/id_rsa

Dies sollte es einem als root ausgeführten Prozess ermöglichen, sich mit Ihren Anmeldeinformationen zu authentifizieren.

  1. Element

Eine plattformübergreifende Lösung besteht darin, eine verbundene Montage zu verwenden, um den .sshdOrdner des Hosts mit dem Container zu teilen:

docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image>

Ähnlich wie beim Agenten-Transfer macht dieser Ansatz die öffentlichen Schlüssel für den Container zugänglich. Ein zusätzlicher Vorteil ist, dass er auch mit einem nicht-root-Benutzer funktioniert und Ihnen die Verbindung zu GitHub ermöglicht. Eine Warnung, die jedoch zu beachten ist, ist, dass der gesamte Inhalt (einschließlich der privaten Schlüssel) des .sshdOrdners geteilt wird. Dieser Ansatz ist daher nur für die Entwicklung und nur für vertrauenswürdige Container-Images wünschenswert.

Im ersten Beispiel sehe ich nicht genau, was ich für « ro ubuntu » einsetzen soll, vielleicht das Node-red Docker-Image, und ich verstehe nicht, was « ro » bedeutet

Was dann
docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro nodered/node-red cat /root/.ssh/id_rsa

Für Beispiel 2
glaube ich, dass man
<host user> durch « pi » auf dem Raspberry ersetzen muss
<docker user> durch « admin » Element, das in /var/lib/node-red/settings.js angegeben ist
<image> durch « nodered/node-red »

Was dann
docker run -v /home/pi/.ssh:/home/admin/.ssh nodered/node-red

Und wenn man dem Code von pierre-gilles folgt, ergibt sich

docker run -d \
--log-opt max-size=10m \
--restart=always \
--privileged \
-u root \
--network=host \
--name node_red \
-v /var/lib/node-red:/data \
-v /home/pi/.ssh:/home/admin/.ssh \
nodered/node-red

Ich würde gerne Ihre Meinung dazu hören, bevor ich mit den Änderungen beginne.
Danke.

Wenn ich mich nicht irre, bedeutet « ro » wohl: read only.
Und für den Rest bin ich noch zu unerfahren. Aber ich glaube, man müsste es so schreiben:

-v /home/pi/.ssh:/home/admin/.ssh:ro

Wir werden trotzdem auf die Bestätigung von Leuten warten, die viel kompetenter sind als ich.

Ich habe meine Untersuchung fortgesetzt.
Daher habe ich verstanden, dass <docker user> für Node-red node-red ist
Quellen: Permissions and Persistence · node-red/node-red-docker Wiki · GitHub

Dann https://docs.docker.com/storage/bind-mounts/
bestätigte deine Information @dahut « ro » bedeutet tatsächlich read only

Also wäre ich für den Moment mit folgendem einverstanden:
-v /home/pi/.ssh:/home/node-red/.ssh:ro

Ich habe getestet

docker run -d \
  -it \
  --name devtest \
  -v /home/pi/.ssh/id_rsa:/home/node-red/.ssh/id_rsa:ro \
  nginx:latest

Der Schlüssel wurde erfolgreich in /home/node-red/.ssh kopiert

Ich habe also die folgende Konfiguration gestartet


docker run -d \
--log-opt max-size=10m \
--restart=always \
--privileged \
-u root \
--network=host \
--name node_red \
-v /var/lib/node-red:/data \
-v /home/pi/.ssh/id_rsa:/home/node-red/.ssh/id_rsa:ro \
nodered/node-red

Und ich konnte Kodi über SSH mit „node-red-contrib-ssh-v3“ neu starten, ohne ein Passwort eingeben zu müssen.