gpt4 book ai didi

mysql - 使用net/ssh/gateway建立到mysql的ssh隧道

转载 作者:行者123 更新时间:2023-11-29 06:51:51 24 4
gpt4 key购买 nike

我正在尝试通过 ssh 建立到远程服务器的隧道,然后使用转发的端口访问 MySQL。

我目前是这样使用的

$gateway = Net::SSH::Gateway.new('target.server', 'user')

def with_gateway
$gateway.open("target.server", 3306) do |port|
yield port
end
end

在我看来,这与此类似...

`ssh -L #{port}:localhost:3306 -N user@target.server`

然后当我尝试使用它并做这样的事情时。

with_gateway do |port|
puts `mysql -u user -ppass -h 127.0.0.1 -P #{port} -e SHOW\ DATABASES\;`
end

它给我这个错误信息..

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

我错过了什么?

最佳答案

$gateway.open("target.server", 3306) 做 |port|

在这种情况下更等同于

ssh -L #{port}:target.server:3306 -N user@target.server

如果您的 mysql 服务器仅监听 127.0.0.1(或内部 IP 地址,或防火墙仅允许通过内部网络连接,所有这些都是合理且正常的配置),这很可能会失败。

可能你想要:

$gateway.open("127.0.0.1", 3306) 做 |port|

在这种情况下。

关于mysql - 使用net/ssh/gateway建立到mysql的ssh隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14879375/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com