🔐 Настройка SSH и ключевой аутентификации в Ubuntu Server
📌 Цель занятия: Научиться безопасно подключаться к серверу с помощью SSH-ключей, настроить конфигурацию SSH-сервера и понять принципы безопасной удалённой работы.
📚 Часть 1: Основы SSH
Что такое SSH?
SSH (Secure Shell) — криптографический сетевой протокол для безопасного удалённого управления сервером и передачи данных.
| Параметр |
Значение |
Описание |
| Порт по умолчанию |
22 |
Можно изменить для безопасности |
| Протокол |
TCP |
Гарантирует доставку пакетов |
| Шифрование |
AES, ChaCha20 |
Защищает данные от перехвата |
| Аутентификация |
Пароль / Ключи |
Ключи надёжнее паролей |
⚠️ Важно: Никогда не используйте пароль для подключения к продакшен-серверам! SSH-ключи обеспечивают значительно более высокий уровень безопасности.
📚 Часть 2: Генерация SSH-ключей
Типы ключей
| Тип |
Команда |
Рекомендация |
| RSA |
ssh-keygen -t rsa |
Устаревший, но совместимый |
| ED25519 |
ssh-keygen -t ed25519 |
✅ Рекомендуется (быстрый и безопасный) |
| ECDSA |
ssh-keygen -t ecdsa |
Альтернатива ED25519 |
Пошаговая инструкция
ssh-keygen -t ed25519 -C "LOGIN@ubuntu-server"
Enter file in which to save the key (/home/LOGIN/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
✅ Результат: В папке
~/.ssh/ появятся два файла:
id_ed25519 — приватный ключ (никому не передавать!)
id_ed25519.pub — публичный ключ (копируется на сервер)
📚 Часть 3: Копирование ключа на сервер
Способ 1: ssh-copy-id (рекомендуется)
ssh-copy-id -i ~/.ssh/id_ed25519.pub student@31.163.204.186 -p 2222
Number of key(s) added: 1
ssh student@31.163.204.186 -p 2222
Способ 2: Ручное копирование
cat ~/.ssh/id_ed25519.pub
ssh student@31.163.204.186 -p 2222
mkdir -p ~/.ssh
echo "ВАШ_КЛЮЧ" >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh
⚠️ Критично: Если права на .ssh или authorized_keys установлены неправильно, SSH-сервер отклонит ключевую аутентификацию в целях безопасности!
📚 Часть 4: Настройка SSH-сервера
Конфигурационный файл
Основной файл конфигурации: /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
Основные параметры для настройки
| Параметр |
Значение |
Описание |
| Port |
2222 |
Изменить порт для безопасности |
| PermitRootLogin |
no |
Запретить вход root напрямую |
| PasswordAuthentication |
no |
Отключить вход по паролю (после настройки ключей!) |
| PubkeyAuthentication |
yes |
Разрешить аутентификацию по ключам |
| AllowUsers |
student LOGIN |
Разрешить только определённых пользователей |
| MaxAuthTries |
3 |
Ограничить количество попыток входа |
Пример безопасной конфигурации
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers student LOGIN
MaxAuthTries 3
LoginGraceTime 60
📚 Часть 5: Перезапуск и проверка
sudo sshd -t
sudo systemctl restart sshd
sudo systemctl status sshd
sudo journalctl -u sshd -f
⚠️ Важно: Перед отключением парольной аутентификации убедитесь, что ключевая работает! Иначе вы можете потерять доступ к серверу.
📚 Часть 6: Практическое задание
🎯 Задание: «Безопасный доступ к серверу»
- Генерация ключей
- Сгенерируйте пару SSH-ключей типа ED25519 на своей локальной машине
- Используйте комментарий с вашим логином:
-C "LOGIN@ubuntu"
- Установите парольную фразу (passphrase)
- Копирование ключа
- Скопируйте публичный ключ на сервер через
ssh-copy-id
- Проверьте подключение без ввода пароля
- Настройка прав
- Проверьте права на папку
~/.ssh (должно быть 700)
- Проверьте права на файл
authorized_keys (должно быть 600)
- Исправьте права при необходимости
- Конфигурация сервера
- Отредактируйте
/etc/ssh/sshd_config
- Измените порт на
2222 (или другой нестандартный)
- Запретите вход для root:
PermitRootLogin no
- Добавьте своего пользователя в
AllowUsers
- Проверка и документирование
- Перезапустите SSH-службу
- Подключитесь на новый порт
- Сделайте скриншот успешного подключения
- Сохраните конфигурацию в файл отчёта
📚 Часть 7: Контрольный чек-лист
- Ключи сгенерированы с типом ED25519
- Приватный ключ защищён парольной фразой
- Публичный ключ скопирован на сервер
- Подключение по ключу работает без пароля
- Права на .ssh установлены в 700
- Права на authorized_keys установлены в 600
- Вход для root запрещён в конфигурации
- Порт SSH изменён на нестандартный
- SSH-служба перезапущена без ошибок
- Новое подключение успешно проверено
📚 Часть 8: Типичные ошибки и решения
| Ошибка |
Причина |
Решение |
| Permission denied (publickey) |
Неправильные права на .ssh |
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys |
| Connection refused |
Неверный порт или служба не запущена |
Проверить порт и sudo systemctl status sshd |
| Host key verification failed |
Изменился ключ сервера |
Удалить старый ключ из ~/.ssh/known_hosts |
| Authentication failed |
Ключ не в authorized_keys |
Проверить содержимое файла и права доступа |
📚 Часть 9: Дополнительные команды
ssh-add -l
ssh-add ~/.ssh/id_ed25519
ssh-add -D
ssh -v student@31.163.204.186 -p 2222
sudo grep "sshd" /var/log/auth.log
💡 Совет: Используйте ssh -v для отладки проблем с подключением. Флаг -v показывает подробный процесс аутентификации.
📚 Часть 10: Домашнее задание
📝 Индивидуальная работа
Задача: Настроить SSH-доступ для дополнительного пользователя
- Создайте нового пользователя
LOGIN_admin
- Сгенерируйте для него отдельную пару ключей
- Добавьте пользователя в группу
sudo
- Настройте подключение по ключу для этого пользователя
- Проверьте возможность выполнения команд с
sudo
- Задокументируйте все шаги в отчёте
Критерии оценки:
- ✅ Ключевая аутентификация работает
- ✅ Парольная аутентификация отключена
- ✅ Права установлены корректно
- ✅ Конфигурация безопасна
- ✅ Отчёт содержит скриншоты и команды