
Цель урока: Полностью отказаться от использования паролей для входа на сервер и перейти на современный, более безопасный и удобный метод аутентификации - SSH-ключи. Мы разберем теорию, научимся генерировать и устанавливать ключи, а также внедрим профессиональные практики: отключим вход по паролю и запретим прямой вход для root.
Часть 1: Теория. Замок и Ключ вместо Секретного Слова
Представьте, что доступ к вашему серверу - это дверь.
-
Аутентификация по паролю: Вы кричите секретное слово. Его могут подслушать, подобрать или украсть.
-
Аутентификация по ключам: Вы используете связку из уникального замка (публичный ключ) и подходящего только к нему ключа (приватный ключ).
-
Вы генерируете эту пару у себя на компьютере.
-
Замок (Публичный ключ): Вы отправляете его на сервер. Он не секретный.
-
Ключ (Приватный ключ): Вы храните его только у себя и никогда никому не передаете.
-
Когда вы подключаетесь, сервер просит вас доказать, что у вас есть приватный ключ, зашифровав случайное сообщение. Ваш компьютер делает это, а сервер проверяет с помощью публичного ключа. Ваш секретный ключ при этом никогда не покидает ваш компьютер.
Часть 2: Практика. Создание и установка SSH-ключей
Шаг 1: Генерация ключевой пары (на вашем локальном компьютере)
Откройте терминал на вашем локальном компьютере (Git Bash, WSL или PowerShell для Windows).
Современный и рекомендуемый способ (ed25519):
Алгоритм Ed25519 новее, быстрее и считается более безопасным при меньшей длине ключа.
ssh-keygen -t ed25519
Классический, все еще надежный способ (RSA):
ssh-keygen -t rsa -b 4096
Мы будем использовать ed25519. После ввода команды система задаст вопросы:
-
Enter file in which to save the key...: Просто нажмите Enter (стандартный путь ~/.ssh/id_ed25519).
-
Enter passphrase (empty for no passphrase):: Очень рекомендую задать пароль! Это пароль не для сервера, а для вашего файла с ключом. Если кто-то украдет ваш файл с ключом, без этого пароля он будет бесполезен.
"Но ведь это неудобно, придется вводить пароль!"
Да, но для этого существует ssh-agent - программа, которая безопасно хранит ваш "разблокированный" ключ в памяти, пока вы работаете. Вы вводите пароль от ключа один раз за сессию, а дальше ssh-agent подставляет его сам.
Чтобы добавить ключ в ssh-agent:
# Запускаем агент (на многих системах он уже запущен)
eval "$(ssh-agent -s)"
# Добавляем наш новый ключ
ssh-add ~/.ssh/id_ed25519
Теперь система будет помнить ваш ключ.
Шаг 2: Копирование публичного ключа на сервер
Публичный ключ - это "замок". Его нужно установить на сервер.
-
Если вы работаете под root (как в нашем курсе):
ssh-copy-id root@IP_АДРЕС_СЕРВЕРА -
Если вы работаете под обычным пользователем (например, admin):
ssh-copy-id admin@IP_АДРЕС_СЕРВЕРА
Система попросит вас в последний раз ввести пароль от пользователя на сервере.
Если ssh-copy-id недоступна (например, на стандартном PowerShell в Windows):
-
На вашем компьютере скопируйте содержимое публичного ключа:
cat ~/.ssh/id_ed25519.pub -
Зайдите на сервер по паролю и выполните там:
mkdir -p ~/.ssh # Важно: используем >> для добавления, а не > для перезаписи! echo "СКОПИРОВАННАЯ_СТРОКА_КЛЮЧА" >> ~/.ssh/authorized_keys -
Установите правильные права. Это критически важный шаг.
# Устанавливаем владельца (для root это не нужно, но для обычных пользователей обязательно) chown -R $USER:$USER ~/.ssh # Устанавливаем права chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Шаг 3: Проверка входа без пароля
Выйдите с сервера (exit) и попробуйте зайти снова. Система должна впустить вас без запроса пароля от сервера (но может спросить пароль от ключа, если вы его задали и не добавили в ssh-agent).
Часть 3: Повышение безопасности. Отключаем "слабые звенья"
Теперь, когда вход по ключу работает, мы должны закрыть все небезопасные лазейки.
ВНИМАНИЕ: Прежде чем начать, откройте второе окно терминала и успешно зайдите на сервер по ключу. Не закрывайте эту вторую сессию, пока не закончите! Это ваша страховка.
Шаг 1: Открываем конфигурационный файл SSH на сервере
nano /etc/ssh/sshd_config
Шаг 2: Отключаем вход по паролю
Найдите строку PasswordAuthentication. Раскомментируйте ее (уберите #) и установите значение no.
PasswordAuthentication no
Шаг 3: Отключаем прямой вход для root (Best Practice)
Прямой вход под root - главная цель для атакующих. Гораздо безопаснее заходить под обычным пользователем с правами sudo (которого мы создали в Уроке 5), а уже с него при необходимости переключаться на root.
Найдите строку PermitRootLogin. Раскомментируйте ее и установите значение prohibit-password или no.
-
prohibit-password: Разрешает root входить только по ключу.
-
no: Полностью запрещает root входить по SSH. Это самый безопасный вариант, если у вас есть другой пользователь с sudo.
PermitRootLogin no
Шаг 4: Перезапускаем службу SSH
Чтобы изменения вступили в силу, перезапустите службу.
systemctl restart ssh
Теперь попробуйте из третьего окна терминала зайти по паролю или под root (если вы выбрали no). Вы должны получить отказ. Ваша вторая сессия, открытая по ключу, при этом останется активной.
Часть 4: Заключение
Поздравляю! Вы только что внедрили профессиональный стандарт безопасности для SSH. Вы научились:
-
Генерировать современные и безопасные ключи ed25519.
-
Использовать passphrase и ssh-agent для баланса между безопасностью и удобством.
-
Правильно устанавливать ключ на сервер, включая настройку прав (chmod) и владельца (chown).
-
Отключать аутентификацию по паролю и запрещать прямой вход для root.
Теперь ваш сервер защищён от простейших атак и брутфорса. Даже если злоумышленник узнает IP и имя пользователя, без вашего приватного ключа он не сможет войти.
На следующем, 39-м уроке, мы продолжим изучение SSH и познакомимся с его продвинутыми возможностями, такими как "проброс портов" (port forwarding). Это мощная техника, которая позволяет безопасно получать доступ к сервисам, работающим на сервере, но не выставленным "наружу" в интернет.
Перейти к просмотру - УРОК №39.
Промо-код: PROMO15 - скидка 15%!
Введите при оформлении первого заказа на сайте: Hosting-VDS.com

