Node-Red ne peut pas lire ma clé ssh (dans /home/pi/.ssh/id_rsa)

Bonjour à tous
J’essaye de contrôler Kodi avec Gladys via Node-red en ssh.
pour cela j’ai créé une clé ssh sur le Raspberry pi de Gladys et cette clé se trouve à l’emplacement suivant
/home/pi/.ssh/id_rsa

Toutefois Node-red ne peut accéder à ce fichier.
Sur le net j’ai trouvé cela

  1. Élément

L’exemple artificiel suivant montre comment une clé privée sur la machine hôte peut être lue à partir d’un conteneur.

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

Cela devrait permettre à un processus exécuté en tant que root de s’authentifier avec vos informations d’identification.

  1. Élément

Une solution multiplate-forme consiste à utiliser un montage lié pour partager le .sshdossier de l’hôte avec le conteneur :

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

Semblable au transfert d’agent, cette approche rendra les clés publiques accessibles au conteneur. Un avantage supplémentaire est qu’il fonctionne également avec un utilisateur non root et vous permettra de vous connecter à GitHub. Une mise en garde à prendre en compte, cependant, est que tout le contenu (y compris les clés privées) du .sshdossier sera partagé. Cette approche n’est donc souhaitable que pour le développement et uniquement pour les images de conteneur de confiance.

Dans le premier exemple je ne vois pas trop par quoi replacer « ro ubuntu », peut être l’image docker de Node-red et je ne comprends pas ce que signifie « ro »

Ce qui ferait
docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro nodered/node-red cat /root/.ssh/id_rsa

Pour l’exemple 2
je pense qu’il faut remplacer
<host user> par « pi » sur le Raspberry
<docker user> par « admin » élément renseigné dans /var/lib/node-red/settings.js
<image> par « nodered/node-red »

Ce qui ferait
docker run -v /home/pi/.ssh:/home/admin/.ssh nodered/node-red

Et en suivant le code de pierre-gilles cela donnerait

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

Je voudrais savoir ce que vous pensez de cela avant de me lancer dans les modifications.
Merci.

Si je ne suis pas trop mauvais, "ro " ça doit dire : read only.
Et pour le reste je suis encore trop novice Mais il me semble qu’entre autres il faudrait écrire comme ceci:

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

On va quand même attendre la confirmation de personnes bien plus aptes que moi

J’ai continué mon investigation.
Donc j’ai cru comprendre que <docker user> pour Node-red est node-red
Sources : Permissions and Persistence · node-red/node-red-docker Wiki · GitHub

Ensuite https://docs.docker.com/storage/bind-mounts/
ont confirmé tés information @dahut « ro » signifie bien read only

Donc pour l’instant je serais partant pour cela:
-v /home/pi/.ssh:/home/node-red/.ssh:ro

J’ai testé

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

La clé a bien été copiée dans /home/node-red/.ssh

J’ai donc lancé la configuration suivante


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

Et j’ai réussi à relancer Kodi en ssh avec « node-red-contrib-ssh-v3 » sans avoir à saisir le mot de passe.