From e221002baa6530e878259a1ace985ebbb7b135c4 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 28 May 2026 05:45:33 +0100 Subject: [PATCH] Add ssh.md instruction --- ssh.md | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 ssh.md diff --git a/ssh.md b/ssh.md new file mode 100644 index 0000000..f97a6f4 --- /dev/null +++ b/ssh.md @@ -0,0 +1,115 @@ +# Инструкция по настройке SSH и отключению доступа по паролю + +## 1. Генерация SSH-ключа + +```bash +# Создаём пару ключей (по умолчанию RSA 2048 бит, можно указать тип и размер) +ssh-keygen -t ed25519 -C "your_email@example.com" +``` + +- При запросе расположения файла нажмите Enter (по умолчанию `~/.ssh/id_ed25519`). +- При желании задайте пароль (passphrase) для защиты ключа. Оставьте пустым, если не нужен пароль при каждом использовании. + +Получится два файла: +- `~/.ssh/id_ed25519` — приватный ключ (никогда не передавайте его!) +- `~/.ssh/id_ed25519.pub` — публичный ключ, который нужно разместить на сервере. + +## 2. Копирование публичного ключа на сервер + +Если у вас уже есть доступ к серверу по паролю (или другому методу), можно использовать `ssh-copy-id`: + +```bash +ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your_server_ip +``` + +Или вручную: +1. Скопировать содержимое файла `id_ed25519.pub`. +2. На сервере открыть файл `~/.ssh/authorized_keys` (создать, если отсутствует) и вставить ключ в новую строку. +3. Убедиться, что у файла и каталога правильные права: + +```bash +chmod 700 ~/.ssh +chmod 600 ~/.ssh/authorized_keys +``` + +## 3. Отключение аутентификации по паролю и изменение порта SSH + +Редактируем конфигурацию SSH демона (`/etc/ssh/sshd_config`): + +```bash +sudo nano /etc/ssh/sshd_config +``` + +Найдите или добавьте/измените следующие строки: + +``` +# Изменяем порт (например, на 2222) +Port 2222 + +# Отключаем вход по паролю +PasswordAuthentication no + +# Оставляем только публичный ключ +PubkeyAuthentication yes + +# (опционально) запрещаем вход root напрямую +PermitRootLogin prohibit-password +``` + +Сохраните файл и выйдите. + +### Перезапуск SSH службы + +```bash +# Для систем с systemd +sudo systemctl restart sshd + +# Или для старых систем +sudo service ssh restart +``` + +**Важно:** Не закрывайте текущую SSH-сессию, пока не проверите, что новый вход работает! + +### Проверка подключения + +```bash +ssh -p 2222 user@your_server_ip +``` + +Если подключение успешно — можно закрыть текущую сессию. + +## 4. Закрытие стандартного порта 22 (опционально) + +После подтверждения, что вход на новый порт работает и аутентификация по ключу функционирует, можно закрыть порт 22 в firewall. + +### Пример для ufw (Ubuntu/Debian) + +```bash +sudo ufw deny 22/tcp +sudo ufw allow 2222/tcp +sudo ufw reload +``` + +### Пример для firewalld (CentOS/RHEL) + +```bash +sudo firewall-cmd --permanent --remove-service=ssh +sudo firewall-cmd --permanent --add-port=2222/tcp +sudo firewall-cmd --reload +``` + +### Пример для iptables + +```bash +sudo iptables -A INPUT -p tcp --dport 22 -j DROP +sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT +sudo netfilter-persistent save # если используется сохранение правил +``` + +## 5. Итоги + +- Вы сгенерировали пару SSH-ключей (приватный остаётся у вас, публичный размещён на сервере). +- Настроили SSH-демон на использование ключевой аутентификации, отключили вход по паролю и изменили порт с 22 на выбранный (например, 2222). +- Проверили подключение по новому порту и закрыли доступ к порту 22 через firewall. + +Теперь ваш сервер защищён от brute-force атак по порту 22 и допускает только авторизацию по SSH-ключу. \ No newline at end of file