SSH-аутентификация по ключу является одним из самых безопасных способов доступа к VPS или выделенному серверу. В отличие от авторизации по паролю, вход выполняется с использованием пары криптографических ключей, что значительно снижает риск несанкционированного доступа к серверу.
В данной инструкции рассмотрена настройка SSH-доступа по ключу для серверов под управлением Ubuntu, Debian и других Linux-дистрибутивов.
Что потребуется
Перед началом убедитесь, что у вас есть:
- VPS или выделенный сервер с Linux;
- Root-доступ к серверу;
- SSH-клиент;
- Компьютер под Windows, Linux или macOS.
Шаг 1. Создание SSH-ключа
Linux и macOS
Откройте терминал и выполните команду:
ssh-keygen -t ed25519 -C "your_email@example.com"
Для совместимости со старыми системами можно использовать RSA:
ssh-keygen -t rsa -b 4096
Нажмите Enter для сохранения ключа в стандартном каталоге.
При желании задайте парольную фразу для дополнительной защиты.
После создания ключей вы увидите файлы:
~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub
или:
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
Windows
В Windows можно использовать:
- OpenSSH (встроен в Windows 10 и новее);
- PuTTYgen;
- Windows Terminal.
Для генерации ключа через PowerShell:
ssh-keygen -t ed25519
Шаг 2. Просмотр публичного ключа
Откройте публичный ключ:
cat ~/.ssh/id_ed25519.pub
или:
cat ~/.ssh/id_rsa.pub
Пример содержимого:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBxxxxxxxxxxxxxxxxxxxxxxxx user@pc
Скопируйте всю строку полностью.
Шаг 3. Добавление ключа на сервер
Подключитесь к серверу:
ssh root@SERVER_IP
Создайте каталог SSH:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
Откройте файл авторизованных ключей:
nano ~/.ssh/authorized_keys
Вставьте скопированный публичный ключ в новую строку.
Сохраните изменения.
Установите корректные права доступа:
chmod 600 ~/.ssh/authorized_keys
Шаг 4. Проверка подключения
Откройте новый терминал и выполните:
ssh root@SERVER_IP
Если настройка выполнена правильно, подключение произойдет без запроса пароля сервера.
Если для ключа была задана парольная фраза, система запросит только её.
Шаг 5. Отключение входа по паролю
После успешной проверки рекомендуется отключить вход по паролю.
Откройте конфигурацию SSH:
nano /etc/ssh/sshd_config
Найдите параметры:
PasswordAuthentication yes
ChallengeResponseAuthentication yes
Измените их на:
PasswordAuthentication no
ChallengeResponseAuthentication no
Сохраните файл.
Перезапустите SSH:
systemctl restart ssh
или:
systemctl restart sshd
В зависимости от дистрибутива.
Шаг 6. Проверка настроек
Не закрывая текущую SSH-сессию, откройте новое подключение:
ssh root@SERVER_IP
Убедитесь, что вход выполняется по ключу.
После этого можно безопасно завершить старую сессию.
Частые ошибки
Permission denied (publickey)
Проверьте права доступа:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
SSH продолжает запрашивать пароль
Убедитесь, что публичный ключ добавлен полностью и без изменений.
Не удается подключиться после отключения пароля
Подключитесь через консоль VPS у провайдера и проверьте содержимое файла:
~/.ssh/authorized_keys
Ключ найден, но вход невозможен
Проверьте журнал SSH:
journalctl -u ssh
или:
journalctl -u sshd
Рекомендации по безопасности
- Используйте ключи Ed25519 вместо RSA, если это возможно.
- Добавляйте парольную фразу для защиты приватного ключа.
- Отключайте вход по паролю после настройки ключей.
- Регулярно обновляйте систему безопасности сервера.
- Не передавайте приватный ключ третьим лицам.
Использование SSH-аутентификации по ключу значительно повышает безопасность VPS и рекомендуется для всех серверов, доступных из интернета.