1

У меня есть mysql, работающий на машине (C) за прокси-машиной SSH (B). Я хочу подключиться к mysql на C через порт 3306, используя инструментальные средства mysql на моем локальном компьютере (A). Машина B доступна на машине A через ssh для пользователя abc с закрытым ключом. машина C доступна для машины B через ssh для пользователя root, использующего тот же закрытый ключ (ключ должен быть переадресован, что обычно происходит, когда я делаю A- ssh -> B - ssh -> C)

Какой должна быть моя стратегия туннелирования? Нужно ли использовать прокси-носки?

Спасибо

1 ответ1

1

Хотя это не точное совпадение, вот пара других тесно связанных вопросов:

  1. Как получить доступ к серверу SSH, который не может принимать входящие соединения
  2. установление ssh-соединения между машинами за брандмауэрами

Чтобы решить вашу конкретную проблему, я бы добавил следующее в ваш файл .ssh/config на "A":

Host B
  User abc
  ForwardAgent yes

Host C
  User root
  LocalForward 3306:localhost:3306
  ProxyCommand ssh -A B -p 22 -W %h:%p
  #ProxyCommand ssh -A B -p 22 nc %h %p

Имея это в виду, вы сможете использовать ssh C для:

  • получить оболочку на C, прыгая через B, и
  • установите локальный (для хоста A) порт вперед для вашего рабочего места mysql.

Как только соединение установлено, вы можете указать свой локальный (на A) рабочий стол mysql на localhost:3306. Если у вас есть другой экземпляр mysql, работающий локально на A, выберите другой порт в опции конфигурации LocalForward и подключитесь к нему.

Обратите внимание, что есть две опции для ProxyCommand, чтобы перепрыгнуть через B, чтобы добраться до C. Альтернатива использует nc вместо опции -W для ssh , так как опция -W не была добавлена unitl ssh версии 5.3 (IIRC).

Вам не нужно использовать SOCKS прокси.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .