У меня есть сценарий bash внутри контейнера Docker, которому необходимо получить доступ к удаленному серверу через ssh. У меня есть ключ SSH внутри переменной. Как я могу добавить его в SSH?
Добавить ключ SSH из переменной
Ответы (4)
Если вы используете Gitlab CI/CD и хотите использовать переменную в качестве ключа SSH, вы можете сделать следующее:
- Добавьте свою переменную в
Settings
->CI/CD
->Variables
Используйте эту переменную в вашем файле
.gitlab-ci.yml
:- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
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
Или, поскольку это bash
ssh-add - <<<"${SSH_PRIVATE_KEY}"
, используйте hereststring.
- person David C. Rankin; 16.09.2017
Это быстрее? А почему
<<<
? А как насчет ssh-add - < "${SSH_PRIVATE_KEY}"
?
- person ; 16.09.2017
Итак, переменная
"${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
@DavidC.Rankin Да, вам нужен «-», иначе ssh-add будет искать ключ в $HOME/.ssh
- person Fabien Bouleau; 19.09.2017
Это решение не работает с поставщиком Paker
shell
и возвращает ошибку: Syntax error: redirection unexpected
Это связано с тем, что здесь такие строки, как ‹‹‹ $token, не поддерживаются POSIX /bin/sh Используйте решение из GitLab, предоставленное @Dieter Casier
- person Roman Shishkin; 23.05.2021
ssh-add
считывалось непосредственно из исходного файла. - person chepner   schedule 16.09.2017