Ysa-k08-ru

From
Jump to navigation Jump to search

Глава 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-ключи в практике
  • Готов к администрированию реальных серверов