Net BasicsЗнаков 4265Время чтения11 мин

Ключи 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_keys

SSH строго проверяет права доступа: каталог ~/.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-vps

Host — короткий локальный псевдоним; 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

Поделиться статьёй