SSH-ключи и отключение входа по паролю
Пароль можно подобрать, ключ — практически нет. Переход на ключи и отключение парольного входа — самый эффективный одиночный шаг в защите сервера.
Содержание
Почему ключи надёжнее паролей
['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 \\\n "mkdir -p ~/.ssh && chmod 700 ~/.ssh && \\\n cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"', 'После копирования сразу проверьте вход по ключу в новом окне терминала. Если сервер пускает без запроса пароля — ключ работает, и можно двигаться дальше. Права должны быть строго 700 на каталог и 600 на файл, иначе sshd проигнорирует ключ из соображений безопасности.']
Шаг 3: отключение пароля
['Перед этим ОБЯЗАТЕЛЬНО проверьте, что вход по ключу работает в отдельном окне терминала — иначе можно закрыть себе доступ. Только затем правьте конфиг.', 'sudo nano /etc/ssh/sshd_config', 'PasswordAuthentication no\nPubkeyAuthentication yes\nPermitRootLogin prohibit-password\nChallengeResponseAuthentication no', 'sudo systemctl restart ssh', 'Опция PermitRootLogin prohibit-password разрешает root только по ключу (или запретите полностью значением no). После рестарта не закрывайте текущую сессию, пока не убедитесь, что новый вход работает как задумано.']
Удобство: SSH-config и агент
['Чтобы не вводить длинные команды, опишите сервер в~/.ssh/config на своей машине:', 'Host maatrix\n HostName SERVER_IP\n User maat\n IdentityFile ~/.ssh/id_ed25519\n Port 22', 'Теперь достаточно набрать ssh maatrix. Passphrase от ключа можно закешировать в ssh-agent на время сессии, чтобы не вводить его при каждом подключении:', 'eval "$(ssh-agent -s)"\nssh-add ~/.ssh/id_ed25519', 'Для командной работы полезно завести отдельный ключ каждому участнику и добавлять их открытые части в authorized_keys — так доступ отзывается точечно, без смены общих секретов.']
Частые ошибки
['- Отключить пароль, не проверив вход по ключу — и потерять доступ к серверу.
- Неверные права: каталог
.sshдолжен быть 700, файл authorized_keys — 600, иначе sshd их игнорирует. - Скопировать закрытый ключ на сервер вместо открытого — грубая ошибка, обнуляющая всю защиту.
- Использовать один ключ без passphrase на всех машинах сразу.
- Хранить закрытый ключ в публичном git-репозитории.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS с root-доступомЧастые вопросы
Что делать, если потерял закрытый ключ?
Если есть доступ к серверу через панель или запасной ключ — просто добавьте новый открытый ключ в authorized_keys, а старый удалите. Поэтому полезно держать резервный ключ.
ed25519 или RSA?
Для новых серверов — ed25519: короче и быстрее при равной или большей стойкости. RSA берите только для совместимости со старым софтом, и не короче 4096 бит.
Можно ли вернуть вход по паролю?
Да, поменяйте PasswordAuthentication на yes и перезапустите ssh. Через панель MAATRIX также доступна консоль, если вы закрыли себе SSH.