Добавить ключ SSH из переменной

У меня есть сценарий bash внутри контейнера Docker, которому необходимо получить доступ к удаленному серверу через ssh. У меня есть ключ SSH внутри переменной. Как я могу добавить его в SSH?


person Community    schedule 16.09.2017    source источник
comment
Как ключ вообще попал в переменную? Вы можете пропустить этот шаг и сделать так, чтобы ssh-add считывалось непосредственно из исходного файла.   -  person chepner    schedule 16.09.2017
comment
В моем конкретном случае SSH-ключ является секретной переменной GitLab.   -  person    schedule 16.09.2017


Ответы (4)


Если вы используете Gitlab CI/CD и хотите использовать переменную в качестве ключа SSH, вы можете сделать следующее:

  • Добавьте свою переменную в Settings -> CI/CD -> Variables
  • Используйте эту переменную в вашем файле .gitlab-ci.yml:

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

документация Gitlab

person Dieter Casier    schedule 16.05.2019

Также вы можете использовать:
echo "${SSH_PRIVATE_KEY}" | ssh-add -
или
ssh-add <(echo "$SSH_PRIVATE_KEY")

person Magepow    schedule 27.02.2021

Я не мог позволить себе роскошь сделать ssh-add, потому что хотел сделать это до ssh -i /path/to/key

Поэтому мой ответ 54675024">здесь

person eigenfield    schedule 13.02.2019

person    schedule
comment
Или, поскольку это bash ssh-add - <<<"${SSH_PRIVATE_KEY}", используйте hereststring. - person David C. Rankin; 16.09.2017
comment
Это быстрее? А почему <<<? А как насчет ssh-add - < "${SSH_PRIVATE_KEY}"? - person ; 16.09.2017
comment
Итак, переменная "${SSH_PRIVATE_KEY}" содержит значение. Он нужен вам в качестве входных данных на stdin для ssh-add. Для удобства bash имеет как heredoc, так и hereststring. Вы можете использовать hereststring` <<<, чтобы переменные данные в "${SSH_PRIVATE_KEY}" отображались в качестве входных данных в stdin для ssh-add с ssh-add - <<<"${SSH_PRIVATE_KEY}". Это быстрее, поскольку дополнительные *подоболочки не генерируются. У вас есть 3 сгенерированных с помощью echo key | ssh-add - (1-для echo, 1-для канала | и 1-для ssh-add). (примечание: вам может понадобиться или не понадобиться '-' после ssh-add, но я подозреваю, что вам это нужно.) - person David C. Rankin; 16.09.2017
comment
@DavidC.Rankin Да, вам нужен «-», иначе ssh-add будет искать ключ в $HOME/.ssh - person Fabien Bouleau; 19.09.2017
comment
Это решение не работает с поставщиком Paker shell и возвращает ошибку: Syntax error: redirection unexpected Это связано с тем, что здесь такие строки, как ‹‹‹ $token, не поддерживаются POSIX /bin/sh Используйте решение из GitLab, предоставленное @Dieter Casier - person Roman Shishkin; 23.05.2021