web-dev-qa-db-fra.com

Docker Load key "/root/.ssh/id_rsa": format invalide

J'essaie de cloner un dépôt qui contient des sous-modules. Le dépôt principal clone bien mais quand je fais git submodule update --init --recursive Dans le dockerfile les sous-modules lancent et erreur.

fatal: clone of '[email protected]:jkeys089/lua-resty-hmac.git' into submodule path '/tmp/third-party/lua-resty-hmac' failed
Failed to clone 'third-party/lua-resty-hmac'. Retry scheduled
Cloning into '/tmp/third-party/lua-resty-jwt'...
load pubkey "/root/.ssh/id_rsa": invalid format
Warning: Permanently added the RSA Host key for IP address '140.82.118.3' to the list of known hosts.
Load key "/root/.ssh/id_rsa": invalid format
[email protected]: Permission denied (publickey).

Dans l'image, j'ai ceci

# authorise ssh Host
RUN mkdir /root/.ssh/ \
    && chmod 700 /root/.ssh \
    && ssh-keyscan github.com > /root/.ssh/known_hosts

# add key and set permission
RUN echo "${SSH_PRIVATE_KEY}" >> /root/.ssh/id_rsa \
    && echo "$ssh_pub_key" > /root/.ssh/id_rsa.pub \
    && chmod 600 /root/.ssh/id_rsa.pub \
    && chmod 600 /root/.ssh/id_rsa

Je n'ai aucun contrôle sur les sous-modules. Je ne sais pas si je peux passer de [email protected] À https pour obtenir des sous-modules.

J'ai même essayé d'utiliser la route GITHUB_TOKEN

# start up git and clone
RUN git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf "https://github.com/" \
    && git clone https://github.com/GluuFederation/gluu-gateway.git /tmp \
    && cd /tmp/ \
    && git submodule update --init --recursive

Et ci-dessous se trouve la partie de la commande build. build --build-arg GITHUB_TOKEN=${GITHUB_TOKEN} --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa.pub)"

S'il vous plaît, aidez-moi. C'est très frustrant. :(

2
Shammir

Si la clé est "format invalide", essayez de la régénérer avec le ancien format PEM .

ssh-keygen -m PEM -t rsa -P "" 

Assurez-vous d'ajouter la clé publique à votre compte GitHub pour une authentification appropriée.

Le OP Shammir ajoute dans les commentaires :

Je pense que le problème est que rien n'est copié de la machine hôte vers l'image docker pendant la construction.

Dans " docker build --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" retournant vide ", Shammir utilise dockito/vault pour gérer la clé privée, mais aussi la configurer sur "AddKeysToAgent": cela n'est pas nécessaire si la clé privée n'est pas protégée par une phrase secrète (comme dans ma commande ci-dessus)

1
VonC