SSH tunnel para MySQL para scripts PHP

1

Eu preciso estabelecer um túnel SSH para que meu script PHP local possa se conectar a um servidor MySQL em um servidor remoto.

Remote machine: MySQL (127.0.0.1:3306) on Linux (SSH port 44422)
Local machine: Linux (Debian Squeeze)

O problema é que não me permite conectar com este comando:

ssh -oPort=44422 user@ip_address

Como eu estabeleço um túnel SSH para que meu script PHP possa se conectar ao MySQL remoto?

(Se você acredita que um método de conexão alternativo, como estabelecer um túnel SSH via script PHP, é melhor, por favor me avise.)

Obrigado antecipadamente!

EDIT: Esqueci de mencionar que o SSH tem um nome de usuário / senha separados e o MySQL tem outro nome de usuário / senha.

    
por Spartanblogger 14.11.2012 / 23:32

2 respostas

2

você precisa criar um túnel ssh de encaminhamento para isso

ssh user@ip -p 44422 -L3306:127.0.0.1:3306

aponte suas consultas mysql para 127.0.0.1:3306

ou se você já estiver em uma sessão ssh com o host remoto, você pode ~C abrir o shell ssh, digitar -L3306:127.0.0.1:3306 e clicar em retornar para adicionar o túnel à sua sessão

TODAS as suas conexões mysql dependerão de sua sessão ssh se manter viva, então eu procuraria uma solução mais permanente como o SSL.

    
por 14.11.2012 / 23:33
3

Não exatamente respondendo à sua pergunta (a h3rrmiller já deu uma boa resposta), mas eu sugiro não fazer isso. Isso irá quebrar todas as suas conexões mysql quando sua conexão ssh morrer, e elas só poderão ser restabelecidas quando você configurar uma nova conexão ssh.

Se você estiver fazendo isso para criptografar o tráfego mysql: o mysql também suporta SSL para conexões, essa é uma alternativa muito melhor.

    
por 14.11.2012 / 23:36