Мне нужно настроить групповой ключ SSH, используемый для публикации в удаленном репозитории Git.
Поскольку git (как и, как я предполагаю, многие другие программы) не позволяет определять задержку флага, ssh -i
информация о том, какой ключ будет использоваться, берется из значений по умолчанию или из того, что определено в~/.ssh/config
Это потребует новой административной задачи для пользователей, которым необходима такая возможность (т. е. добавление соответствующих записей в свой ~/.ssh/config
файл).
Есть ли способ сэкономить усилия? Я не смог найти ни одной переменной окружения, которая считывалась бы OpenSSH, поскольку это было бы решением (путем создания скрипта-обертки, который делает то, что требуется).
решение1
Итак, ответы следующие (спасибо, Tink):
Использование ssh-agent для хранения ключа всегда будет работать. Для этого вы можете инкапсулировать вызов в скрипт:
#!/bin/bash
key=$1
[[ "$SSH_AGENT_PID" ]] || eval $(ssh-agent)
ssh-add $key
#...the rest of the script...
В частном случае git есть GIT_SSH
переменная окружения, которая указывает на команду, которая будет вызвана вместо ssh. Так что можно выдавать ssh
с -i
флагом.
Хочу предупредить вас, что это всего лишь проверка концепции: вам нужно убедиться, что среда не затронута после загрузки скрипта (т. е. если агент был там, а ключ не был загружен, вам нужно удалить ключ, если агента не было, удалите агента и т. д.)