Encaminhando acesso ao mysql via túnel ssh com a ajuda do expect

Encaminhando acesso ao mysql via túnel ssh com a ajuda do expect

Eu tenho este comando que cria um túnel ssh funcional para acesso ao servidor MySQL:

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

Aqui, o remotehost é acessível apenas através do jump host que configurei com a ajuda do ProxyCommand em .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

Como posso fazer o mesmo usando a ferramenta expect?

Responder1

expecté uma estrutura para processar entrada/saída de algum tipo de conexão TCP. Pode suportar ssh, claro... mas certamente não entende o protocolo mysql. A maior parte da comunicação no próprio protocolo mysql são dados binários... e a última vez que examinei expect, ele era incapaz de analisar dados binários corretamente. Talvez seja melhor escrever um wrapper para o mysqlcliente, o que exigiria que você iniciasse mysqlapós a conexão via ssh.

informação relacionada