17.3 Построение новых ключей хостов
Проблема
Вы заглянули в каталог /etc/ssh
, но не нашли там файлов с ключами: дистрибутив Linux не сгенерировал их при установке OpenSSH. А может быть, вы просто хотите сгенерировать новые ключи самостоятельно.
Решение
Сгенерируйте новую пару ключей программой ssh-keygen
. Программа должна запускаться с правами root
и с указанием имени новой пары ключей. Всегда задавайте контрольную фразу (пароль):
# ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
6c:24:75:54:d3:21:17:c9:11:db:41:dd:95:3f:d0:ac root@windbag
В приведённом примере используются имена ключей по умолчанию, но вы можете назвать их как угодно. При использовании других имён не забудьте включить их в файл /etc/ssh/sshd_config
:
HostKey /etc/ssh/ssh_host_rsa_key
Закомментируйте или удалите записи несуществующих ключей.
Комментарий
О выборе сильных паролей говорилось в разделе «Введение» настоящей главы. После того как OpenSSH заработает и открытые ключи будут распространены среди пользователей, не стоит изменять закрытые ключи без особо веских причин, поскольку вам придётся распространять открытые ключи заново. Если пользователь попытается подключиться со старым открытым ключом, он получит следующее сообщение:
& WARNING: HOST IDENTIFICATION HAS CHANGED! @
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Are you sure you want to continue connecting? (yes/no)
Проинструктируйте пользователей, чтобы они всегда отвечали "нет" и ставили вас в известность о происходящем.
Дополнительные советы
При управлении ключами хостов также важно периодически проверять файлы конфигурации на предмет устаревших или избыточных записей, так как это может повлиять на производительность и безопасность. Кроме того, можно настроить автоматическое оповещение в системе мониторинга для получения уведомлений о подозрительных подключениях, особенно если у вас есть клиенты, взаимодействующие с несколькими серверами.
Ещё одной полезной практикой является регулярное обновление открытых ключей пользователей и предоставление им инструкций по установке новых ключей, если это необходимо. На сервере можно также настроить регулярное удаление старых или ненужных ключей из каталога /etc/ssh
, чтобы избежать путаницы и уменьшить риск несанкционированного доступа.
См. также
ssh(1); ssh-keygen(1).