web-dev-qa-db-fra.com

génération de clé ssh à l'aide de dockerfile

J'utilise Docker pour quelques-uns de mes projets, où une exigence est de générer des clés ssh à l'aide du fichier Docker, de sorte que lorsque le conteneur sera construit, il générera une paire de clés rsa.J'ai vu quelques exemples où la génération de clés se produit via le fichier .sh et Dockerfile a le commond pour exécuter ce fichier .sh. Existe-t-il un moyen de le faire directement dans Dockerfile au lieu de .sh

Actuellement, j'utilise le suivant dans Dockerfile pour générer une paire de clés ssh. Mais cela me donne une erreur disant "/ bin/sh ssh-keygen introuvable"

RUN ssh-keygen -q -t rsa -N '' -f /home/docker/.ssh/id_rsa

sera vraiment très utile si quelqu'un peut fournir un moyen d'y parvenir.

Merci, Yash

15
priyank

Le problème est que ssh-keygen n'est pas encore disponible dans votre conteneur. Cela peut être facilement résolu, par exemple en installant le paquet openssl-client sur une image de base ubuntu.

Le Dockerfile suivant fait exactement cela et place une clé dans le dossier racine du conteneur

FROM ubuntu:latest

RUN apt-get -y install openssh-client
RUN ssh-keygen -q -t rsa -N '' -f /id_rsa

MAIS LISEZ CECI: Mon conseil fort est de ne pas placer de clés, de certificats que ce soit dans le système de fichiers du conteneur! Cela peut entraîner des risques de sécurité importants, car quiconque obtient l'image du conteneur peut essentiellement s'authentifier auprès des services pour lesquels la clé est valide; cela vous oblige à gérer les images de conteneurs avec le même soin que vous traitez les clés cryptographiques et les certificats!

Par conséquent, il est conseillé de garder les clés à l'extérieur du conteneur. Ceci peut être facilement réalisé en utilisant Docker VOLUMES; et vous monteriez simplement un volume contenant des clés/conteneurs dans le conteneur Docker lors du lancement.

CRÉATION DE CLÉS EN DEHORS DU RÉCIPIENT Le Dockerfile suivant crée à la place la clé une fois le conteneur démarré, et il peut être utilisé pour créer la clé en dehors du système de fichiers du conteneur

FROM ubuntu:latest
RUN apt-get -y install openssh-client 
CMD ssh-keygen -q -t rsa -N '' -f /keys/id_rsa

Commencez par créer le conteneur avec la commande suivante:

docker build -t keygen-container .

Démarrage du conteneur à l'aide

docker run -v /tmp/:/keys keygen-container

va créer une clé sur l'hôte dans/tmp.

29
eliasw

La réponse est presque correcte ci-dessus, mais vous devez d'abord mettre à jour apt-get. Peut-être que c'était correct sur l'image ubuntu précédente mais n'a pas fonctionné pour moi. De plus, je supprime d'abord tous les fichiers id_rsa qui pourraient exister dans le répertoire localhost.

printf "FROM ubuntu:latest \nRUN apt-get update; apt-get -y install openssh-client \nCMD rm /keys/id_rsa*; ssh-keygen -q -t rsa -N '' -f /keys/id_rsa" > Dockerfile
docker build -t keygen-container .
docker run -v /tmp/:/keys keygen-container
4
James Drummond