Encaminhamento de porta para o tráfego do host local através do SSH para o banco de dados da máquina de produção

1

No windows eu costumava usar o Bitvise Tunnler para transmitir todo o tráfego no host local do meu PC: 33306 através de uma conexão SSH para o meu servidor - e daí para o banco de dados do servidor mysqlserver: 3306.

PC:33306 -> server:3306 -> databaseserver:3306

Agora que estou usando o linux, descubro que é fácil executar o SSH em qualquer lugar a qualquer momento com:

ssh [email protected]

No entanto, não sei como replicar esse encaminhamento de porta usando as opções ssh. Se fosse apenas de um computador para outro, acho que poderia fazer algo assim ...

ssh -L 33306:localhost:3306 [email protected]

UPDATE

Eu tentei conectar usando o seguinte SSH e a conexão parece funcionar.

ssh -L 33306:localhost:3306 [email protected]

Mas phpMyAdmin gera este erro ao tentar se conectar ao outro servidor

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

Então eu tentei

ssh -L 33306:db.server.com:3306 [email protected]

e phpMyAdmin lançaram este erro

#1045 - Access denied for user '[[user]]'@'localhost' (using password: YES)

executando netstat -an | mais mostra

tcp6       0      0 ::1:33306               :::*                    LISTEN   

Novamente, o fluxo do processo deve ficar assim:

mypc -> server -> otherdbserveronprivatelan
    
por Xeoncross 21.02.2010 / 20:43

3 respostas

3

Isso deve ser feito:

ssh -L 33306: databaseserver: 3306 [email protected]

    
por 21.02.2010 / 21:03
0

Funcionou. No entanto, eu ainda estava usando "localhost" em vez de "127.0.0.1" ao tentar se conectar.

For the command line ssh, this is

ssh -L 3333:mysqlhostname.youdomain.com:3306 [email protected]

You then open connections in your mysql frontend to 127.0.0.1 port 3333. Note that it must be 127.0.0.1, not localhost, as the later would use UNIX domain sockets.

link

    
por 23.02.2010 / 19:54
0

Isso não é não um problema ssh mas sim um problema do MySQL. Para o MySQL, você precisa garantir que o usuário tenha acesso a esse banco de dados. Isso geralmente é feito com:

GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host' IDENTIFIED BY 'password';

A principal coisa a ser observada aqui é a configuração 'host' . Como você está tunelando por SSH, precisa estar em 'username'@'localhost' para funcionar. A configuração de curinga de 'username'@'%' não funcionará para conexões de host local.

    
por 24.02.2010 / 07:47