2013-02-14 2 views
1

ssh를 통해 원격 서버에 대한 터널을 설정하고 전달 된 포트를 사용하여 MySQL에 액세스하려고합니다.net/ssh/gateway를 사용하여 mysql에 ssh 터널 설정

나는 현재처럼 사용하고이 이와 유사한 것 내 마음 ... 그런

`ssh -L #{port}:localhost:3306 -N [email protected]` 

내가 그것을 사용하려고 할

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

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

이 같은.

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|

은 MySQL 서버는 127.0.0.1에서 수신 (또는 내부 IP 주소를하면 잘되지 않을 수

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

,이 경우에 더 동등하다, 또는 방화벽 만 있으면 내부 네트워크를 통한 연결 만 허용되며 모두 합리적이고 정상적인 구성입니다.

은 아마 당신이 원하는 : 대신이 경우

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

합니다.

관련 문제