Настройка входа по SSH-ключам и отключение пароля
Калькулятор прав chmod
chmod.| Чтение (r) | Запись (w) | Выполнение (x) | |
|---|---|---|---|
| Владелец | |||
| Группа | |||
| Остальные |
chmod 644 файлВход по SSH-ключам надёжнее пароля: ключ невозможно подобрать перебором, а логин происходит без ввода секрета. Настройка занимает три шага: сгенерировать ключ, скопировать его на сервер, отключить пароль. Разберём каждый.
Как работают SSH-ключи
Ключ состоит из пары файлов: приватного (хранится только у вас) и публичного (кладётся на сервер). При подключении сервер проверяет, что у вас есть приватный ключ, соответствующий публичному, — без передачи самого секрета.
Шаг 1. Сгенерируйте пару ключей
На своём компьютере (не на сервере) выполните:
ssh-keygen -t ed25519 -C "my-laptop"
ed25519 — современный и быстрый алгоритм. Если клиент старый, используйте RSA:
ssh-keygen -t rsa -b 4096 -C "my-laptop"
Программа спросит путь (по умолчанию ~/.ssh/id_ed25519) и парольную фразу. Парольная фраза защищает ключ, если файл украдут, — рекомендуем задать её.
В итоге появятся два файла:
~/.ssh/id_ed25519— приватный ключ (никому не передавать);~/.ssh/id_ed25519.pub— публичный ключ.
Шаг 2. Скопируйте ключ на сервер
Проще всего — утилитой ssh-copy-id:
ssh-copy-id deploy@ВАШ_IP
Она попросит пароль пользователя один раз и добавит ваш публичный ключ в ~/.ssh/authorized_keys на сервере.
Если ssh-copy-id недоступен (например, на Windows), скопируйте ключ вручную:
cat ~/.ssh/id_ed25519.pub | ssh deploy@ВАШ_IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Шаг 3. Проверьте вход по ключу
Отключитесь и подключитесь снова:
ssh deploy@ВАШ_IP
Если вход прошёл без запроса пароля (или спросил только парольную фразу ключа) — всё работает. Не отключайте пароль, пока не убедились, что ключ работает.
Шаг 4. Отключите вход по паролю
Откройте конфигурацию SSH-сервера:
sudo nano /etc/ssh/sshd_config
Найдите и приведите к такому виду параметры:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
Сохраните файл и перезапустите службу:
sudo systemctl restart ssh
На части систем служба называется sshd — тогда sudo systemctl restart sshd.
Права на файлы
SSH строго проверяет права. Если вход по ключу не работает, проверьте:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Итоговый чек-лист
| Шаг | Команда |
|---|---|
| Сгенерировать ключ | ssh-keygen -t ed25519 |
| Скопировать на сервер | ssh-copy-id user@ip |
| Проверить вход | ssh user@ip |
| Отключить пароль | PasswordAuthentication no |
| Перезапустить SSH | systemctl restart ssh |
Частые вопросы
Что делать, если потерял приватный ключ?
Восстановить его нельзя. Подключитесь через KVM-консоль в панели управления сервером, добавьте новый публичный ключ в authorized_keys, а старый удалите.
Можно ли использовать один ключ на нескольких серверах? Да, публичный ключ можно добавить на любое число серверов. Приватный при этом остаётся один и хранится у вас.
Как добавить ключ второго компьютера?
Сгенерируйте пару на втором устройстве и добавьте его публичный ключ отдельной строкой в authorized_keys. Каждый ключ — своя строка.
Безопасно ли отключать пароль полностью? Да, это рекомендуемая практика: она исключает подбор пароля. Главное — сохранить резервный доступ через KVM-консоль на случай потери ключа.
Итог
Вход по ключам убирает главную уязвимость — подбор пароля. После настройки и отключения PasswordAuthentication сервер становится заметно безопаснее, а логин — быстрее.
Хотите потренироваться на своём сервере? Возьмите VPS на Linux, оформите аренду VPS или доверьте настройку в разделе Администрирование серверов.
