Ysa-k08-ru
Глава 8: Основы SSH
Цели главы
После изучения этой главы ученик:
- Понимает, что такое SSH и зачем он нужен
- Знает, как работает клиент–серверная модель SSH
- Умеет подключаться к удалённому серверу по SSH
- Понимает различие между аутентификацией по паролю и по ключам
- Умеет создавать и использовать SSH-ключи
- Может безопасно администрировать удалённый сервер
1. Что такое SSH
SSH (Secure Shell) — это сетевой протокол для безопасного удалённого доступа к системе.
SSH позволяет:
- удалённо входить в систему (аналогично локальному терминалу)
- выполнять команды на сервере
- передавать файлы (scp, sftp)
- администрировать сервер без физического доступа
SSH шифрует:
- пароль
- команды
- передаваемые данные
Это делает его безопасной заменой старых протоколов (telnet, rsh).
2. Клиент и сервер SSH
SSH работает по модели клиент–сервер.
- SSH-клиент — программа, с помощью которой мы подключаемся
Пример: ssh (Linux, macOS), PuTTY (Windows)
- SSH-сервер — служба, принимающая подключения
Обычно: sshd
На сервере должен быть установлен и запущен SSH-сервер.
3. Установка SSH-сервера
На Debian/Ubuntu:
sudo apt update sudo apt install openssh-server
Проверка статуса:
systemctl status ssh
Или:
systemctl status sshd
4. Подключение к удалённому серверу
Базовый синтаксис команды ssh:
ssh пользователь@сервер
Пример:
ssh student@192.168.1.10
Или по имени хоста:
ssh student@server1
Если порт нестандартный (не 22):
ssh -p 2222 student@192.168.1.10
5. Первое подключение и known_hosts
При первом подключении SSH покажет сообщение:
The authenticity of host 'server' can't be established. Are you sure you want to continue connecting (yes/no)?
Это нормально.
После подтверждения:
- ключ сервера сохраняется в файле:
~/.ssh/known_hosts
Это защищает от атак «man-in-the-middle».
6. Аутентификация по паролю
По умолчанию SSH использует пароль пользователя.
Процесс: 1. Клиент подключается к серверу 2. Сервер запрашивает пароль 3. При правильном пароле пользователь входит в систему
Недостатки:
- уязвимость к brute-force атакам
- неудобство при автоматизации
7. Аутентификация по SSH-ключам
7.1 Что такое SSH-ключи
SSH-ключи — это пара файлов:
- приватный ключ (хранится у клиента)
- публичный ключ (копируется на сервер)
Приватный ключ:
- должен храниться в секрете
- никогда не передаётся
7.2 Генерация SSH-ключей
На клиенте:
ssh-keygen
Обычно:
- тип: RSA или ED25519
- путь: ~/.ssh/id_rsa
- passphrase — желательно указать
После генерации:
- приватный ключ: ~/.ssh/id_rsa
- публичный ключ: ~/.ssh/id_rsa.pub
7.3 Копирование ключа на сервер
Самый простой способ:
ssh-copy-id student@192.168.1.10
Или вручную:
- скопировать содержимое id_rsa.pub
- добавить в файл на сервере:
~/.ssh/authorized_keys
Права должны быть:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
8. Вход по ключу
После настройки:
ssh student@192.168.1.10
Пароль пользователя не запрашивается (если не задан passphrase для ключа)
9. Безопасность SSH (базовые меры)
Типичные меры администратора:
- запрет входа под root
- отключение входа по паролю
- смена порта SSH
Файл конфигурации:
/etc/ssh/sshd_config
Примеры параметров:
PermitRootLogin no PasswordAuthentication no Port 2222
После изменений:
sudo systemctl restart ssh
⚠ Перед отключением пароля убедитесь, что вход по ключу работает!
10. Практика: подключение по SSH
Практика 1
- Установить openssh-server
- Проверить статус сервиса
- Узнать IP-адрес сервера
Практика 2
- Подключиться к серверу с другой машины
- Войти под обычным пользователем
- Выполнить команды: whoami, hostname, uptime
Практика 3
- Сгенерировать SSH-ключи
- Скопировать ключ на сервер
- Проверить вход без пароля
Практика 4 (безопасность)
- Запретить вход под root
- Перезапустить ssh
- Проверить, что root не может войти
11. Типичные проблемы
Проблема: Permission denied (publickey)
Причины:
- неправильные права на ~/.ssh
- ключ не добавлен в authorized_keys
- используется другой ключ
Решение:
- проверить права
- использовать ключ явно:
ssh -i ~/.ssh/id_rsa user@server
12. Дополнительные материалы для самостоятельного изучения
- man ssh
- man sshd
- man ssh_config
- man sshd_config
- Документация OpenSSH
- Практика с двумя виртуальными машинами
13. Результат главы
После этой главы ученик:
- Умеет работать с удалёнными серверами
- Понимает основы сетевой безопасности
- Использует SSH-ключи в практике
- Готов к администрированию реальных серверов