17.5. Использование нескольких пар ключей

Проблема

Требуется сгенерировать отдельные ключи для обращения к разным хостам или разным типам учётных записей. Например, вы хотите, чтобы один ключ SSH применялся для администрирования сервера FTP, а другой — для обращения к вашим личным учётным записям.

Решение

Утилита ssh_keygen позволяет задать парам ключей любые имена по вашему усмотрению. К имени открытого ключа автоматически присоединяется суффикс .pub. Всегда указывайте пароль!

akkana@windbag:$ ssh-keygen -t rsa -f /home/akkana/.ssh/ftp_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/akkana/.ssh/ftp_key.
Your public key has been saved in /home/akkana/.ssh/ftp_key.pub.
The key fingerprint is:
95:d2:12:55:66:ba:ec:a8:5c:40:4b:le:03:2b:6c:ea akkana@windbag

При создании пары ключей с пользовательскими именами имя закрытого ключа указывается в файле ~/.ssh/ssh_config. Если файл не существует, создайте его и добавьте строку:

IdentityFile ~/.ssh/ftp_key

Комментарий

В каталоге /etc/ssh должна находиться копия стандартного файла ssh_config. При внесении изменений проще всего добавить новые параметры в конец файла.

Файл ssh_config предназначен для хранения конфигурации, которая может быть специфичной для конкретного пользователя или общесистемного уровня. Копия файла в домашнем каталоге пользователя задаёт параметры, относящиеся к конкретному пользователю, и позволяет настраивать использование определённых ключей для каждого подключения.

Использование нескольких пар ключей может повысить безопасность, так как каждому сервису или серверу можно назначить уникальный ключ. Это даёт возможность ограничивать доступ к разным ресурсам с разными уровнями конфиденциальности и упрощает управление доступом, особенно в среде с множеством серверов или пользователей.

Важно помнить, что доступ к конфиденциальным данным должен контролироваться надёжными паролями. Даже если ключи не требуют пароля, рекомендуется их использование для дополнительной защиты, так как это затрудняет несанкционированное подключение к вашим учетным записям.

Также рекомендуется периодически менять ключи и соблюдать правила безопасного хранения. Закрытые ключи должны быть защищены на уровне файловой системы: задайте права 600, чтобы только владелец мог читать и записывать этот файл, и избегайте передачи ключей другим пользователям или системам.

Если вы работаете с множеством серверов, удобно настроить ~/.ssh/config так, чтобы автоматически выбирать нужный ключ в зависимости от сервера, к которому вы подключаетесь. Для этого создайте в ~/.ssh/config блоки для каждого хоста:

Host ftp_server
    HostName ftp.example.com
    User akkana
    IdentityFile ~/.ssh/ftp_key
Host personal_account
    HostName personal.example.com
    User akkana
    IdentityFile ~/.ssh/personal_key

Такая настройка делает процесс подключения проще, так как вам не нужно вручную указывать ключ при каждом входе.

См. также

ssh(1), ssh_config(5).