SSH-ключи и отключение входа по паролю
Пароль можно подобрать, ключ — практически нет. Переход на ключи и отключение парольного входа — самый эффективный одиночный шаг в защите сервера.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Почему ключи надёжнее паролей
SSH-ключ — это пара из закрытой части (хранится у вас) и открытой (лежит на сервере). Сервер проверяет, что вы владеете закрытым ключом, не передавая по сети ничего, что можно подобрать перехватом или перебором. Даже 300-символьный пароль по стойкости уступает современному ключу, а запомнить такой пароль всё равно невозможно.
Пока включён вход по паролю, боты будут перебирать пары логин-пароль круглосуточно, засоряя логи и создавая нагрузку. Как только пароль отключён, брутфорс становится бессмысленным: сервер просто отказывает всем, кто не предъявил валидный ключ. На VPS MAATRIX root-доступ даёт полный контроль над sshd, поэтому настройка занимает пару минут.
Ключи удобны и в работе: с ними легко автоматизировать деплой, подключаться к нескольким серверам без ввода паролей и раздавать доступ команде, добавляя и отзывая отдельные ключи без смены общего пароля.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS с root-доступомШаг 1: генерация ключа
Создавайте ключ на своём компьютере, а не на сервере — закрытая часть не должна покидать вашу машину. Рекомендуемый алгоритм — ed25519: он короткий, быстрый и криптографически стойкий.
ssh-keygen -t ed25519 -C "maat@laptop"
Обязательно задайте пароль на сам ключ (passphrase) — тогда даже украденный файл ключа бесполезен без него. Это второй рубеж на случай, если ноутбук потеряют или скомпрометируют. Закрытый ключ (id_ed25519) никогда и никому не передавайте, не выкладывайте в репозитории и не копируйте в облака в открытом виде.
Если по каким-то причинам нужен RSA (совместимость со старым софтом), генерируйте его не короче 4096 бит: ssh-keygen -t rsa -b 4096. Для всего современного окружения ed25519 предпочтительнее.
Шаг 2: перенос ключа на сервер
Проще всего скопировать открытую часть командой ssh-copy-id — она сама создаст нужные каталоги и выставит права. Если её нет — добавьте ключ вручную.
ssh-copy-id -i ~/.ssh/id_ed25519.pub maat@SERVER_IP
Ручной вариант, если ssh-copy-id недоступен:
cat ~/.ssh/id_ed25519.pub | ssh maat@SERVER_IP \
"mkdir -p ~/.ssh && chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
После копирования сразу проверьте вход по ключу в новом окне терминала. Если сервер пускает без запроса пароля — ключ работает, и можно двигаться дальше. Права должны быть строго 700 на каталог и 600 на файл, иначе sshd проигнорирует ключ из соображений безопасности.
Шаг 3: отключение пароля
Перед этим ОБЯЗАТЕЛЬНО проверьте, что вход по ключу работает в отдельном окне терминала — иначе можно закрыть себе доступ. Только затем правьте конфиг.
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
ChallengeResponseAuthentication no
sudo systemctl restart ssh
Опция PermitRootLogin prohibit-password разрешает root только по ключу (или запретите полностью значением no). После рестарта не закрывайте текущую сессию, пока не убедитесь, что новый вход работает как задумано.
Удобство: SSH-config и агент
Чтобы не вводить длинные команды, опишите сервер в ~/.ssh/config на своей машине:
Host maatrix
HostName SERVER_IP
User maat
IdentityFile ~/.ssh/id_ed25519
Port 22
Теперь достаточно набрать ssh maatrix. Passphrase от ключа можно закешировать в ssh-agent на время сессии, чтобы не вводить его при каждом подключении:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Для командной работы полезно завести отдельный ключ каждому участнику и добавлять их открытые части в authorized_keys — так доступ отзывается точечно, без смены общих секретов.
Частые ошибки
- Отключить пароль, не проверив вход по ключу — и потерять доступ к серверу.
- Неверные права: каталог
.sshдолжен быть 700, файл authorized_keys — 600, иначе sshd их игнорирует. - Скопировать закрытый ключ на сервер вместо открытого — грубая ошибка, обнуляющая всю защиту.
- Использовать один ключ без passphrase на всех машинах сразу.
- Хранить закрытый ключ в публичном git-репозитории.
Если вы всё же закрыли себе SSH, доступ спасёт консоль в панели MAATRIX: через неё можно вернуть PasswordAuthentication или добавить новый ключ. Держите резервный ключ на второй машине — это избавит от паники при потере основного.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS с root-доступомОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Что делать, если потерял закрытый ключ?
Если есть доступ к серверу через панель или запасной ключ — просто добавьте новый открытый ключ в authorized_keys, а старый удалите. Поэтому полезно держать резервный ключ.
ed25519 или RSA?
Для новых серверов — ed25519: короче и быстрее при равной или большей стойкости. RSA берите только для совместимости со старым софтом, и не короче 4096 бит.
Можно ли вернуть вход по паролю?
Да, поменяйте PasswordAuthentication на yes и перезапустите ssh. Через панель MAATRIX также доступна консоль, если вы закрыли себе SSH.