从变量添加SSH密钥

Lyb*_*rta 5 ssh bash ssh-keys

我在Docker容器中有一个bash脚本,需要通过ssh访问远程服务器.我在变量中有SSH密钥.如何将其添加到SSH?

Lyb*_*rta 15

ssh-add - <<< "${SSH_PRIVATE_KEY}"
Run Code Online (Sandbox Code Playgroud)

  • 好吧,变量`"$ {SSH_PRIVATE_KEY}"保存值.你需要它作为'stdin`的输入作为`ssh-add`.作为便利功能,bash同时具有*heredoc*和*herestring*.您可以使用*herestring`` <<<`使``$ {SSH_PRIVATE_KEY}'中的变量数据在`ssh-add`的`stdin`上显示为带有`ssh-add - <<<"$的输入{} SSH_PRIVATE_KEY"`.更快的是没有生成额外的*子壳*.你有3个`echo key |生成 ssh-add -`(1表示`echo`,1表示管道`| |,1表示ssh-add).(注意:在ssh-add`之后你可能需要也可能不需要`'-``,但我怀疑你这样做.) (7认同)
  • 或者因为它是bash`ssh-add - <<<"$ {SSH_PRIVATE_KEY}"`并使用*herestring*. (2认同)
  • @DavidC.Rankin 是的,您需要“-”或 ssh-add 将在 $HOME/.ssh 中查找密钥 (2认同)

Mag*_*pow 6

此外,您还可以使用:
echo "${SSH_PRIVATE_KEY}" | ssh-add -

ssh-add <(echo "$SSH_PRIVATE_KEY")

  • 谢谢!这对我有用 `echo "${SSH_PRIVATE_KEY}" | ssh-添加-` (2认同)

Die*_*ier 5

如果使用的是Gitlab CI / CD,并且要将变量用作SSH密钥,则可以执行以下操作:

  • Settings-> CI/CD->中添加变量Variables
  • .gitlab-ci.yml文件中使用该变量:

    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null

Gitlab文档