Управление множеством ssh-ключей с паролями (ключевыми фразами или passphrase) через keychain

Наличие множества ssh-ключей и необходимости их использовать для работы доставляет немало проблем. Их нужно где-то хранить, указывать каждый раз при использовании соответствующий ключ, запоминать ключевые фразы и вводить их (passphrase) при использовании. Ситуацию спасают возможность настройки ssh и утилита keychain (или её аналоги).

Примеры в этой заметке относятся к Alt Linux. В вашей системе, возможно, что-то будет по-другому.

Для начала создадим ключи с ключевыми фразами, например, «key_a» и «key_b». Обычно это делается через ssh-keygen -t ALGORITM -C «user@domain.ru».

Далее отредактируем (или создадим) конфигурацию ~/.ssh/config:

Host *
IgnoreUnknown UseKeychain
AddKeysToAgent yes
UseKeychain yes
 
Host gitflic_home
HostName gitflic.ru
User git
IdentityFile ~/.ssh/key_a
IdentitiesOnly yes
 
Host gitflic_work
HostName gitflic.ru
User git
IdentityFile ~/.ssh/key_b
IdentitiesOnly yes

Теперь добавим эти ключи в ssh-агент:

ssh-add ~/.ssh/key_a
ssh-add ~/.ssh/key_b

После этого ключами можно будет пользоваться проще чем раньше, например:

ssh host_name

Вместо «host_name» нужно подставить значение из конфигурации указанное в параметре Host. В примере из этой заметки это «gitflic_home» и «gitflic_work».

Для работы с git-репозиториями, через новые настройки ssh, необходимо внести изменения в наименования серверов. Пример:

# было:
git@gitflic.ru:itreview/templete-slim-v4-project.git
 
# стало:
gitflic_home:itreview/templete-slim-v4-project.git
gitflic_work:itreview/templete-slim-v4-project.git

Пример обновления ссылки на удаленный репозиторий:

git remote set-url origin gitflic_home:itreview/templete-slim-v4-project.git

Теперь автоматизируем ввод ключевых фраз (passphrase).

Проверим установлен ли у нас keychain:

keychain -V

При его отсутствии введите команду для установки:

sudo apt-get install keychain

Осталось лишь настроить активацию keychain при каждом запуске системы. Один из самых простых способов — добавить соответствующую команду в конец файла ~/.bash_profile или в любой другой файл с командами для запуска при старте системы:

eval `ssh-agent -s`
 
eval `keychain --eval --agents ssh /home/igor/.ssh/key_a`
 
eval `keychain --eval --agents ssh /home/igor/.ssh/key_b`

Теперь при старте системы keychain будет единожды запрашивать у вас ключевую фразу и её не придется постоянно вводить при каждом использовании.

Полезные ссылки

06.12.2022

Категория(-и): Рецепты

# # #

Добавить комментарий