Isso deve ser feito:
ssh -L 33306: databaseserver: 3306 [email protected]
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
Isso deve ser feito:
ssh -L 33306: databaseserver: 3306 [email protected]
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.
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.
Tags ssh mysql port-forwarding