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

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

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

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

Здесь remotehost доступен только через jump host, который я настроил с помощью 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?

решение1

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

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