2017-09-16 13 views
0

J'ai un script bash dans un conteneur Docker qui doit accéder au serveur distant via ssh. J'ai la clé SSH dans une variable. Comment puis-je l'ajouter à SSH?Ajouter une clé SSH à partir de la variable

+1

Comment la clé est-elle entrée dans la variable en premier lieu? Vous pouvez ignorer cette étape et avoir 'ssh-add' directement dans le fichier d'origine. – chepner

+0

Dans mon cas particulier, la clé SSH est une variable secrète GitLab. – Lyberta

Répondre

1
ssh-add - <<< "${SSH_PRIVATE_KEY}" 
+1

Ou puisque c'est bash 'ssh-add - <<<" $ {SSH_PRIVATE_KEY} "' et utilisez un * herestring *. –

+0

Est-ce plus rapide? Et pourquoi '<<<'? Qu'en est-il de 'ssh-add - <" $ {SSH_PRIVATE_KEY} "'? – Lyberta

+3

Eh bien, la variable '" $ {SSH_PRIVATE_KEY} "' contient la valeur. Vous en avez besoin en entrée sur 'stdin' pour' ssh-add'. Comme une fonctionnalité de commodité, bash a à la fois un * heredoc * et * herestring *. Vous pouvez utiliser la fonction "herestring" '<<<' pour faire apparaître les données variables dans '" $ {SSH_PRIVATE_KEY} "' en entrée sur 'stdin' pour 'ssh-add' avec' ssh-add - <<< "$ {SSH_PRIVATE_KEY} "'. Il est plus rapide dans la mesure où aucune sous-couche * supplémentaire n'est générée. Vous avez 3 générés avec 'echo key | ssh-add -' (1-pour 'echo', 1-pour le tube' | 'et 1-pour ssh-add). (note: vous pouvez ou ne pouvez pas avoir besoin de '' -'' après 'ssh-add', mais je suppose que vous le faites.) –