SSH-переспрямування слухає локальний порт 13306, але mysql усе ще підключається до локальної бази даних—або повідомляє, що його локальний сокет відсутній. У Unix клієнт MySQL, якому задано localhost, може вибрати Unix-сокет замість TCP. Вказання порту не обов'язково змінює цей вибір.

Для наявного схваленого TCP-переспрямування зробіть протокол явним:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

Ім'я користувача наведено для прикладу; параметр пароля запитує інтерактивне введення. Команда підключається до локального TCP-слухача замість Unix-сокета.

Тримайте два входи окремо

Фіксований SSH-маршрут може мати таку форму:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

SSH-сервер шлюзу досягає db.internal:3306. Потім MySQL автентифікує обліковий запис бази даних через цей потік байтів. Прийнятий SSH-ключ не дає входу до бази даних, а обмеження джерела бази даних бачать з'єднання, що надходить із того боку маршруту.

Це фіксований TCP-адаптер, а не налаштування SOCKS, яке споживає mysql. Застосунку не потрібні SOCKS-переговори, оскільки кінцева точка переспрямування має одну заздалегідь визначену ціль.

Зберігайте передбачувану ідентичність TLS бази даних і політику сертифікатів там, де вони використовуються. Підключення сокета до loopback не робить сертифікат бази даних дійсним для іншої назви служби. Успішне локальне TCP-з'єднання вирішує вибір транспорту, а не подальшу автентифікацію бази даних чи перевірки TLS.

Схожі статті