Я використовую рішення, яке є трохи складнішим, але дуже універсальним, тому що я хочу зберегти деякий поділ в ключах ідентифікації SSH, які використовуються для моїх серверів домашньої мережі, офісних серверів, серверів консалтингових мереж клієнтів та інших різних систем, на яких у мене є облікові записи.
Тепер, коли це сказано, я працюю з робочих станцій Linux майже виключно, тому у мене є ключ USB, який налаштовується за допомогою шифрування LUKS, і мій менеджер вікон X11 разом з демоном HAL виявляє зашифрований диск LUKS і запитує про парольну фразу розшифровки, коли він вставляється та намагається бути змонтованим. Зберігаючи це на зашифрованому диску, як я це роблю, я ніколи не зберігаю свої SSH ключі на жодній робочій станції.
Потім у моєму ~/.ssh/config
файлі є така конфігурація :
Host *
Protocol 2
IdentityFile %d/.ssh/keys.d/id_rsa.%l
IdentityFile %d/.ssh/keys.d/id_dsa.%l
IdentityFile %d/.ssh/keys.d/%u@%l
% D перекладається бути домашній каталог користувача з допомогою OpenSSH і в ~ / .ssh каталогу Я створив keys.d в якості символічного посилання на шлях до каталогу на зашифрованому диску USB , коли він правильно встановлений.
% Л вираз перекладається як локальний клієнтські машини ім'я хоста і % U будуть переведені на ім'я користувача локального клієнта.
Ця конфігурація дозволяє SSH шукати ключ за допомогою 3 різних виразів. Наприклад, якщо ім'я мого локального клієнта було jdoe
і ім'я моєї локальної клієнтської машини, examplehost
воно виглядатиме в наступному порядку, поки не знайде ключ, який існував і не був прийнятий віддаленим сервером.
/home/jdoe/.ssh/keys.d/id_rsa.examplehost
/home/jdoe/.ssh/keys.d/id_dsa.examplehost
/home/jdoe/.ssh/keys.d/jdoe@examplehost
Ви навіть можете використовувати вираз % r, щоб шукати ключ, специфічний для імені віддаленого сервера, або % h для імені хоста віддаленого сервера так само, як використовувались % u та % l .
Оновлення: Тепер я фактично використовую gnuPG-агент GnuPG із сумісністю ssh-агент, щоб просто прочитати та використовувати ключ автентифікації зі своєї смарт-картки OpenPGP v2.