借助expect透過ssh隧道轉送對mysql的訪問

借助expect透過ssh隧道轉送對mysql的訪問

我有這個命令創建一個工作 ssh 隧道來訪問 MySQL 伺服器:

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

在這裡,只能透過我在 .ssh/config 中的 ProxyCommand 的幫助下配置的跳轉主機來存取遠端主機:

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 連線後啟動。

相關內容