Ключи SSH для начинающих: Публичный ключ, приватный ключ и файл config
Руководство для новичков по SSH-ключам: разница между публичным и приватным ключом, парольной фразой и ключом хоста. Настройка пар ключей и упрощение входа через ~/.ssh/config.
В предыдущем уроке мы подключились к VPS по паролю. Парольная аутентификация проста для понимания, но подвержена подбору и утечкам. Общепринятый стандарт безопасного доступа — аутентификация по SSH-ключам.
Термины «публичный ключ, приватный ключ и ключ хоста» часто путают. Запомните главное правило: **Пользовательские ключи доказывают, *кто вы такой*, а ключи хоста доказывают, *к какому серверу вы подключились*.**
1. Как взаимодействуют публичный и приватный ключи
Их можно представить в виде физического замка и ключа:
| Файл | Где хранится | Можно ли делиться | Назначение |
|---|---|---|---|
| Приватный ключ | На вашем ПК | НИКОГДА | Доказывает, что подключающийся владеет подлинным ключом |
Публичный ключ (.pub) | На сервере | ДА | Указывает серверу, какому приватному ключу разрешен вход |
| Парольная фраза ключа | В памяти/Связке ключей | НИКОГДА | Защищает файл приватного ключа при краже вашего устройства |
Сервер хранит только публичный ключ. В процессе входа происходит криптографическая проверка подписи, при этом приватный ключ никогда не передается по сети.
Если в инструкции вам предлагают «загрузить свой приватный ключ на сервер», это грубая ошибка. Приватные ключи нельзя публиковать в Git, выкладывать на скриншотах или отправлять в мессенджерах.
2. Генерация отдельного ключа для учебного VPS
На вашем локальном компьютере (Mac или Linux) создайте пару современных ключей Ed25519:
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_vps_learning -C "vps-learning"Разбор параметров:
-t ed25519: Выбор современного криптографического алгоритма Ed25519;-f: Указание уникального имени файла во избежание перезаписи существующих ключей;-C: Понятный комментарий (не влияет на процесс аутентификации).
При запросе укажите надежную парольную фразу. Использование ssh-agent или системной связки ключей избавит от необходимости вводить фразу вручную при каждом входе.
Будут созданы два файла:
~/.ssh/id_ed25519_vps_learning Приватный ключ (СЕКРЕТ, никому не передавать)
~/.ssh/id_ed25519_vps_learning.pub Публичный ключ (Устанавливается на сервер)3. Установка публичного ключа на сервер
Самый надежный способ — вставить содержимое файла .pub в личном кабинете хостинга при создании VPS. Если доступ по паролю уже работает, можно использовать утилиту ssh-copy-id.
В любом случае строка публичного ключа добавляется в файл пользователя на сервере:
~/.ssh/authorized_keysSSH строго проверяет права доступа: каталог ~/.ssh должен быть доступен только владельцу (chmod 700), а файл authorized_keys — защищен от записи посторонними (chmod 600). При слишком свободных правах вход по ключу будет отклонен.
Проверьте три момента:
1. Ключ добавлен в профиль нужного пользователя Linux; 2. Скопировано содержимое файла .pub, а не приватного ключа; 3. До отключения входа по паролю работа ключа проверена в соседнем окне терминала.
4. Упрощение команд через SSH config
Вводить каждый раз ssh -i ~/.ssh/id_ed25519_vps_learning admin@203.0.113.10 неудобно.
Добавьте псевдоним в локальный файл ~/.ssh/config:
Host learning-vps
HostName 203.0.113.10
User admin
Port 22
IdentityFile ~/.ssh/id_ed25519_vps_learning
IdentitiesOnly yesТеперь для подключения достаточно ввести:
ssh learning-vpsHost — короткий локальный псевдоним; HostName — реальный IP или домен. Параметр IdentitiesOnly yes заставляет SSH предлагать серверу только явно указанный ключ.
5. Разница между ключами пользователя и ключами хоста
| Тип | Кто хранит секрет | На какой вопрос отвечает |
|---|---|---|
| Ключ пользователя | Подключающийся клиент | «Имеет ли этот пользователь право на вход?» |
| Ключ хоста | Серверный демон SSH | «Действительно ли это тот самый сервер?» |
Хэш SHA256, отображаемый при первом подключении, принадлежит ключу хоста. Если в будущем отпечаток внезапно изменится, выясните причину до удаления записи из known_hosts.
6. Безопасный переход на аутентификацию по ключам
1. Убедитесь в доступности веб-консоли хостинга; 2. Создайте обычного пользователя и добавьте его публичный ключ; 3. Не закрывая текущую сессию, проверьте вход по ключу во втором окне терминала; 4. Убедитесь, что у нового пользователя работают права sudo; 5. Отключите в sshd_config вход по паролю и прямой вход под root; 6. Проверяйте каждую правку в новой сессии, отслеживая журнал логов авторизации.
Не меняйте все параметры одновременно. Открытая резервная сессия — ваша лучшая страховка.
7. Обслуживание ключей
- Используйте отдельные пары ключей для разных устройств и задач;
- При утере устройства или увольнении сотрудника удаляйте соответствующий публичный ключ из
authorized_keys; - При подозрении на компрометацию создайте новый ключ, добавьте его на сервер и немедленно удалите старый;
- Храните резервные копии приватных ключей в зашифрованном виде;
- Тот факт, что у ключей нет срока годности, не означает, что их не нужно периодически ротировать.
8. Резюме
Ключи SSH — это не просто длинные пароли, а криптографическое разделение замка (публичный ключ) и секретного ключа (приватный ключ). Использование ~/.ssh/config делает подключение быстрым и безопасным.
Главные условия безопасности: приватный ключ никогда не покидает ваш ПК, а новый способ входа всегда проверяется в отдельной сессии до закрытия старой.
Часто задаваемые вопросы (FAQ)
Можно ли передавать файл .pub другим людям?
Публичный ключ предназначен для распространения, но устанавливать его следует только на те серверы, к которым вам действительно необходим доступ. Приватный ключ передавать строго запрещено.
Как запускать автоматические скрипты, если на ключе стоит пароль?
Используйте отдельные сервисные ключи с ограниченными правами, ssh-agent или хранилища секретов (Secret Management).
Нужно ли полностью отключать вход по паролю?
Да, это рекомендуется после того, как вы убедились в стабильной работе входа по ключам, прав sudo и веб-консоли.
Источники
Share