123/ssh.md

115 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Инструкция по настройке 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-ключу.