Как использовать ssh ProxyCommand для подключения к удаленному серверу MySQL за хостом-бастионом?

Как использовать ssh ProxyCommand для подключения к удаленному серверу MySQL за хостом-бастионом?

Здесь задействованы три машины.

  1. Локальный хост, где я занимаюсь разработкой. Он же ноутбук.
  2. Хост Bastion, к которому вы должны сначала подключиться. Он же jump.
  3. Сервер MySQL, к которому я хочу подключиться. Он же БД.

Мой открытый ключ ssh находится в /home/myusername/.ssh/authorized_keys при переходе.

В моем ~/.ssh/config есть следующее:

Host jump
    HostName jump.domain.com
    User myusername
    IdentityFile ~/.ssh/myprivatekey

Я могу ssh jumpи могу нормально прыгать.

Какую команду ssh мне нужно запустить в терминале на ноутбуке, чтобы иметь возможность подключиться с ноутбука к базе данных через

mysql -h 127.0.0.1 -P 3308

Мне нужен туннель SSH и переадресация портов, но я еще не разобрался с синтаксисом. Я хочу использовать 3308 для производственной БД и 3307 для промежуточной БД, и я запускаю локальную БД MySQL на 3306, поэтому переадресация портов на нестандартные порты MySQL.

решение1

Вот что я в итоге использовал:

ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000

который изhttp://csce.uark.edu/~kal/info/private/ssh/ch09_02.htmраздел 9.2.6

Примечание: вопреки заданному мной вопросу, proxyCommand не нужен, нужна только правильная комбинация параметров командной строки ssh.

решение2

Команда — ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'.

источник

решение3

Вы можете использовать следующий .ssh/config, предполагая, что вы подключаетесь с машины A к C через машину B

Host B
  User username_on_b
  Hostname ip_of_b
  IdentityFile ~/.ssh/key_for_b

Host C
  User username_on_c
  Hostname ip_of_c
  IdentityFile ~/.ssh/key_for_c
  Localforward 3308 ip_of_your_sql_server:3306
  Proxyjump B
  # or old-fashion
  # Proxycommand ssh B nc %h %p

Затем вы просто вводите с A:

ssh C

Тогда из А можно

mysql -P 3308 -H localhost

Связанный контент