Назад | Перейти на главную страницу

Перенаправление доступа к mysql через туннель ssh с помощью expect

У меня есть эта команда, которая создает рабочий туннель ssh для доступа к серверу MySQL:

ssh -f test@remotehost -L 127.0.0.1:3306:mysqlhost:3306 -N

Здесь удаленный хост доступен только через хост перехода, который я настроил с помощью ProxyCommand в .ssh / config:

Host somehost
  Hostname jumphost-name
  ForwardAgent yes
  ControlPath ~/.ssh/cm-%r@%h:%p
  ControlMaster auto
  ControlPersist 10m

Host *.example.com 
  User test
  StrictHostKeyChecking no
  ProxyCommand ssh -X -4 test@somehost nc %h %p

Как я могу сделать то же самое с помощью инструмента expect?

expect это структура для обработки ввода / вывода от какого-то TCP-соединения. Конечно, он может поддерживать ssh ... но точно не понимает протокол mysql. Большая часть коммуникации в самом протоколе mysql - это двоичные данные ... и в последний раз, когда я исследовал expect, он не смог правильно проанализировать двоичные данные. Возможно, вам лучше написать обертку для mysql клиент, который потребует от вас запуска mysql после подключения по ssh.