Управление множеством 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 будет единожды запрашивать у вас ключевую фразу и её не придется постоянно вводить при каждом использовании.

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


Комментарии (0)

Войдите, чтобы оставить комментарий.