Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Дата публикации: 24.04.2026

Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель

Хочу себе такие же кнопки
ccb9a536


Подключение к базе данных через SSH-туннель: Безопасный доступ из DBeaver/Navicat

Вы когда-нибудь пытались зайти в банковский сейф через уличную дверь, а не через бронированный вход? Так же глупо подключаться к базе данных напрямую, минуя SSH-туннель — это как оставлять ключи от сервера под ковриком. В этом уроке вы научитесь настраивать безопасное удалённое подключение к MySQL/PostgreSQL через DBeaver или Navicat, используя проброс портов по SSH. Это защитит ваши данные от перехвата и даст доступ к базам, которые "спрятаны" за фаерволом.


Почему нельзя подключаться напрямую?

Представьте, что ваша база данных — это дом с окнами:

  • Прямое подключение (без туннеля) = окна открыты, и любой может заглянуть или пробраться внутрь.
  • Подключение через SSH-туннель = все окна закрыты, а вход только через секретный лаз (зашифрованный канал).
Уязвимость Риск без SSH-туннеля Решение с SSH-туннелем
Перехват трафика Логины/пароли и данные могут быть украдены (MITM-атака) Все данные шифруются по SSH
Блокировка фаерволом Порт базы (3306/5432) закрыт для внешнего мира Туннель использует порт 22 (SSH), который обычно открыт
Атаки на слабые пароли Брутфорс по открытому порту Аутентификация по SSH-ключу + паролю

Важно: Многие хостеры (например, AWS RDS, DigitalOcean) по умолчанию запрещают внешние подключения к базам. SSH-туннель — единственный безопасный способ обойти это ограничение.


Что такое SSH-туннель и как он работает?

SSH-туннель (или проброс портов) — это технология, которая перенаправляет трафик с вашего локального компьютера на удалённый сервер через зашифрованный канал SSH.

Аналогия с почтовой службой

  1. Вы отправляете письмо (запрос к базе) в конверте.
  2. Вместо того чтобы бросить его в почтовый ящик напрямую (риск потерять), вы отдаёте его курьеру (SSH).
  3. Курьер относит письмо в секретный почтовый отдел (ваш сервер) и возвращает ответ тем же путём.

Схема работы

[Ваш компьютер] ←(локальный порт 3307)→ [SSH-туннель] ←(порт 22)→ [Ваш сервер] ←(порт 3306)→ [База данных]
  • Локально вы подключаетесь к 127.0.0.1:3307 (например), но на самом деле трафик идёт через SSH на сервер, а оттуда — в базу.

Подготовка: Что вам понадобится

Перед настройкой убедитесь, что у вас есть:

  1. SSH-доступ к серверу (логины/пароль или приватный ключ).
  2. Установленный DBeaver/Navicat (или другой SQL-клиент).
  3. Права на подключение к базе (имя пользователя, пароль, имя базы).
  4. Открытый порт 22 на сервере (проверьте фаервол: sudo ufw status).

Совет: Если вы используете AWS EC2, убедитесь, что в Security Group разрешён входящий трафик на порт 22 (SSH) с вашего IP.


Шаг 1: Создание SSH-туннеля вручную (для понимания)

Прежде чем настраивать DBeaver, давайте создадим туннель через терминал (Linux/macOS) или PuTTY (Windows). Это поможет понять механику.

Для Linux/macOS (Terminal)

ssh -L 3307:localhost:3306 пользователь@ваш_сервер -N
  • -L 3307:localhost:3306 — пробрасываем локальный порт 3307 на 3306 (MySQL) на сервере.
  • пользователь@ваш_сервер — ваши SSH-креды.
  • -N — не выполнять команды, только туннель.

Пример: Если база на другом хосте (не localhost), используйте:

ssh -L 3307:10.0.0.2:3306 пользователь@ваш_сервер -N

где 10.0.0.2 — внутренний IP сервера с базой.

Для Windows (PuTTY)

  1. Откройте PuTTY.
  2. Введите хост и порт (22) в Session.
  3. Перейдите в Connection → SSH → Tunnels.
  4. В поле Source port введите 3307.
  5. В поле Destination введите localhost:3306 (или 10.0.0.2:3306, если база на другом сервере).
  6. Нажмите Add, затем Open.
  7. Введите логин/пароль от SSH.

Проверка: После создания туннеля откройте новый терминал и выполните:

telnet 127.0.0.1 3307

Если соединение установлено — туннель работает!


Шаг 2: Настройка подключения в DBeaver

Теперь настроим DBeaver (аналогично для Navicat).

1. Создайте новое подключение

  • Откройте DBeaver → Создать подключение → Выберите MySQL (или PostgreSQL).
  • Вкладка Основное:
    • Хост: localhost (или 127.0.0.1).
    • Порт: 3307 (тот, что пробросили в туннеле).
    • База данных: имя вашей базы.
    • Пользователь/пароль: данные от базы (не от SSH!).

2. Настройка SSH-туннеля в DBeaver

  • Перейдите на вкладку SSH.
  • Отметьте галочку Use SSH tunnel.
  • Заполните поля:
    • SSH Host: IP или домен вашего сервера.
    • SSH Port: 22.
    • User: ваш SSH-пользователь (например, root или ubuntu).
    • Authentication Method:
    • Password — если используете пароль.
    • Public Key — если подключаетесь по ключу (рекомендуется!).
      • Укажите путь к приватному ключу (например, ~/.ssh/id_rsa).
    • Local Port: 3307 (должен совпадать с портом в подключении к базе).

Важно: Если база находится не на том же сервере, где SSH, укажите Remote Host (например, 10.0.0.2) и Remote Port (3306).

3. Тестирование подключения

  • Нажмите Test Connection.
  • Если всё настроено верно — увидите сообщение "Success".
  • Нажмите Finish и подключитесь к базе.

Шаг 3: Настройка в Navicat

Процесс аналогичен DBeaver, но с небольшими отличиями.

  1. Создайте новое подключение (MySQL/PostgreSQL).
  2. В поле Host укажите 127.0.0.1, порт — 3307.
  3. Перейдите на вкладку SSH.
  4. Включите Use SSH Tunnel и заполните:
    • SSH Host: IP вашего сервера.
    • Port: 22.
    • User: SSH-пользователь.
    • Authentication: выберите Password или Public Key.
  5. Нажмите Test ConnectionOK.

Шаг 4: Автоматизация (опционально)

Чтобы не создавать туннель вручную каждый раз, можно:

  1. Сохранить сессию в PuTTY (для Windows).
  2. Использовать autossh (Linux/macOS) для автоматического переподключения:
    autossh -M 0 -f -N -L 3307:localhost:3306 пользователь@ваш_сервер
  3. Настроить запуск туннеля при старте системы (через cron или systemd).

Распространённые ошибки и их решение

Ошибка Причина Решение
"Connection refused" при тесте в DBeaver Туннель не создан или порт занят Проверьте, запущен ли SSH-туннель (netstat -tulnp \| grep 3307)
"Access denied for user" Неправильные креды к базе Убедитесь, что пользователь имеет права на подключение с localhost
"SSH connection failed" Неправильный ключ/пароль Проверьте путь к ключу или пароль от SSH
"Port 22: Connection timed out" Фаервол блокирует SSH Разрешите порт 22 в фаерволе (sudo ufw allow 22)
"Host key verification failed" Изменился SSH-ключ сервера Удалите старый ключ из ~/.ssh/known_hosts

Безопасность: 5 правил для защиты

  1. Отключите подключение к базе извне:
    -- Для MySQL
    DROP USER 'user'@'%';
    CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
  2. Используйте SSH-ключи, а не пароли.
  3. Закройте ненужные порты в фаерволе:
    sudo ufw deny 3306  # Для MySQL
    sudo ufw allow 22   # Только SSH
  4. Настройте fail2ban для защиты от брутфорса:
    sudo apt install fail2ban
    sudo systemctl enable fail2ban
  5. Используйте нестандартный SSH-порт (опционально):
    sudo nano /etc/ssh/sshd_config  # Измените Port 22 на Port 2222
    sudo systemctl restart sshd

Практика для закрепления

Упражнение 1: Теория

  1. Почему подключение к базе через SSH-туннель безопаснее, чем напрямую?
  2. Какие порты задействованы в схеме: [Локальный компьютер] → [SSH-туннель] → [Сервер с базой]?
  3. Что такое -L в команде ssh -L 3307:localhost:3306...?

Упражнение 2: Настройка вручную

  1. Создайте SSH-туннель через терминал (или PuTTY) для подключения к тестовой базе.
  2. Проверьте его работу с помощью telnet 127.0.0.1 3307.
  3. Подключитесь к базе через mysql -u пользователь -p -h 127.0.0.1 -P 3307.

Упражнение 3: DBeaver/Navicat

  1. Настройте подключение к базе через SSH-туннель в DBeaver.
  2. Экспортируйте структуру одной из таблиц в SQL-файл.
  3. Создайте нового пользователя в базе с правами только на чтение (GRANT SELECT...).

Упражнение 4: Диагностика

  1. Предположим, при тесте подключения вы видите ошибку:
    SSH connection failed: Authentication failed.

    Перечислите возможные причины и способы их устранения.

Упражнение 5: Безопасность

  1. Напишите команду для фаервола (ufw), которая:
    • Закроет доступ к MySQL (порт 3306) для всех, кроме localhost.
    • Откроет SSH (порт 22) только для вашего IP (например, 123.123.123.123).

Итоги

  • Вы научились безопасно подключаться к базе через SSH-туннель, минуя блокировки фаервола.
  • Теперь вы можете управлять базами на AWS RDS, DigitalOcean, VPS без риска перехвата данных.
  • SSH-туннель — это ваш "секретный лаз" в мир защищённых подключений.

Дополнительный материал:


Введение: чем VDS отличается от шаред-хостинга и зачем это веб-мастеру
Как правильно выбрать тариф: CPU, RAM, NVMe или SSD, канал
Выбор операционной системы: почему Ubuntu 22.04/24.04 — стандарт индустрии
Регистрация домена и первичная настройка DNS-записей (A, AAAA, CNAME)
Генерация SSH-ключей на локальном компьютере (Windows/Mac/Linux)
Добавление публичного ключа на сервер и первый вход по SSH
Отключение входа по паролю и запрет авторизации для root
Смена стандартного порта SSH для снижения шума в логах
Создание основного рабочего пользователя с правами sudo
Базовое обновление системы и установка необходимых утилит (curl, wget, git, htop)
Настройка часового пояса и синхронизация времени (NTP)
Установка и базовая настройка фаервола UFW
Разрешение только необходимых портов (SSH, HTTP, HTTPS)
Установка Fail2Ban для защиты от перебора паролей
Настройка правил Fail2Ban для SSH и веб-сервера
Знакомство с Docker: установка движка и CLI
Установка Docker Compose для управления мульти-контейнерными приложениями
Основы изоляции: почему каждый проект должен быть в своем контейнере
Подготовка файловой структуры сервера для удобного хранения проектов
Развертывание Nginx как обратного прокси-сервера через Docker
Настройка конфигурации Nginx для статических сайтов
Установка PHP-FPM в отдельном контейнере
Связка Nginx и PHP-FPM через внутреннюю Docker-сеть
Оптимизация настроек PHP-FPM (pm.max_children, memory_limit) под нагрузку
Установка MariaDB/MySQL в изолированном контейнере
Безопасное хранение паролей от БД через переменные окружения (.env)
Подключение к базе данных из внешнего клиента (DBeaver/Navicat) через туннель
Установка Redis для кэширования запросов и сессий
Интеграция Redis с PHP-приложением для ускорения работы
Автоматическая выдача SSL-сертификатов через Certbot (Let's Encrypt)
Настройка автопродления SSL-сертификатов по крону
Принудительный редирект с HTTP на HTTPS в Nginx
Включение gzip и brotli сжатия для ускорения загрузки страниц
Настройка кэширования статики (browser caching) в заголовках Nginx
Защита от простых DDoS и ботов: модуль limit_req в Nginx
Настройка резервного копирования баз данных (mysqldump) по расписанию
Настройка резервного копирования файлов проектов (tar)
Отправка бэкапов на удаленное хранилище (S3-compatible storage или другой сервер)
Ротация и очистка старых логов, чтобы не забить диск
Мониторинг нагрузки: установка и настройка htop и iotop
Просмотр логов в реальном времени: tail, grep и journalctl
Установка простого мониторинга доступности (Uptime Kuma или скрипт в Telegram)
Изоляция арбитражных инструментов: запуск ботов в отдельных контейнерах
Установка SOCKS5/HTTP прокси (3proxy) внутри Docker для мультиаккаунтинга
Настройка аутентификации и ограничения доступа к прокси по IP
Проверка анонимности и работы прокси-сервера
Оптимизация ядра Linux (sysctl.conf) для высоких нагрузок и сетевых соединений
Настройка swap-файла: когда он нужен, а когда вредит
Чек-лист финальной проверки безопасности перед запуском проекта
План действий при взломе или падении сервера: восстановление из бэкапа
АПТЕЧКА ДЛЯ ЖИВОТНЫХ
Автомобили Германии — FORD, MERSEDES, VW, IVECO
Чат рулетка 2026: чаты, где каждый момент — шанс
Чат рулетка онлайн
Чат с Аней: психологический разговор
Чатрулетка: новый способ общения
Чай и кофе: сила вкуса
Детские игрушки из безопасных материалов
Эксплуатация шин: Рекомендации по использованию
Фототехника для пейзажей
Как Aptum хостинг помогает малым бизнесам в управлении CRM-системами
Как выбрать Vdsina вечный хостинг для своего проекта
Компоненты безопасности IP
Конкуренция на российском автомобильном рынке
Онлайн генератор паролей для Windows
Оптимизация обработки форм GEO проекта
Сервер для социальных сетей: Безопасность, Скорость, Изоляция
Смешные моменты
Сравнение Arsys хостинг сервисов для блогеров с WordPress на 2023 год
Весь экран под циферблат
рейтинг хостингов 2026 Быстрые VDS серверы