2013-02-14 6 views
1

Я пытаюсь установить туннель на удаленный сервер через ssh, а затем использовать перенаправленный порт для доступа к MySQL.Использование net/ssh/gateway для установки туннеля 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 [email protected]` 

Затем, когда я пытаюсь использовать его и делать что-то вроде этого.

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 

Что мне не хватает?

ответ

2

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

более эквивалентно, в данном случае,

ssh -L #{port}:target.server:3306 -N [email protected]

, который вполне может потерпеть неудачу, если ваш сервер MySQL прослушивает только на 127.0.0.1 (или на внутренний IP-адрес, или межсетевой экран, чтобы разрешать соединения только через внутренние сети, все из которых являются разумными и нормальными конфигурациями).

Возможно, вы хотите:

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

вместо в этом случае.

 Смежные вопросы

  • Нет связанных вопросов^_^