我有这个命令可以创建一个有效的 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
我如何使用期望工具做同样的事情?
答案1
expect
是一个用于处理来自某种 TCP 连接的输入/输出的框架。它当然可以支持 ssh……但它肯定不理解 mysql 协议。mysql 协议本身中的大多数通信都是二进制数据……上次我检查时expect
,它无法正确解析二进制数据。您最好为客户mysql
端编写一个包装器,这将要求您在通过 ssh 连接后启动mysql
。