SSH туннелирование и переадресация портов для соединения с MySQL через ssh proxy

879
Vijay Muvva

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

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

Спасибо

1
Итак, вы хотите перейти от А к С через SSH, это правильно? Tristan Vigil 7 лет назад 0
Да. Я хочу добраться до C от A Vijay Muvva 7 лет назад 0

1 ответ на вопрос

1
eggo

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

  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 прокси.

Похожие вопросы