Chegar ao MySQL ou ao PostgreSQL por um túnel SSH, passo a passo

As portas da base de dados (3306 para o MySQL, 5432 para o PostgreSQL) não estão abertas de fora. Um túnel SSH resolve isso: abre uma porta no seu computador que leva, por dentro do SSH, até à base no servidor. Para o cliente de base de dados, a ligação é a 127.0.0.1.

Passo a passo

1 Confirme que tem SSH. Na hospedagem partilhada a porta é a 2299, e nem todas as contas têm shell. O endereço do servidor e o utilizador estão em dados de acesso ao cPanel.
2 Abra o túnel num terminal do seu computador (Linux, macOS, ou o Windows 10 e 11, que trazem o ssh). Para o MySQL:ssh -N -p 2299 -L 3307:127.0.0.1:3306 utilizador@servidor
3 Para o PostgreSQL, a mesma ideia com outras portas:ssh -N -p 2299 -L 5433:127.0.0.1:5432 utilizador@servidor
4 Deixe a janela aberta. O -N diz ao SSH para não abrir uma shell, só o túnel. Escreva a palavra-passe quando pedida.
5 No cliente (MySQL Workbench, DBeaver, HeidiSQL, psql), ligue-se a 127.0.0.1, porta 3307 (ou 5433), com o utilizador e a palavra-passe da base, e não os do SSH.
6 Quando acabar, feche a janela do túnel com Ctrl+C.
Campo Valor Porquê
Porta local (-L) 3307 ou 5433 Uma porta livre do seu computador. Usamos números diferentes dos do servidor para não chocar com uma base que já tenha instalada.
Destino 127.0.0.1:3306 ou :5432 Visto do servidor. É a base, no próprio servidor.
Utilizador da base o nome completo, com prefixo O túnel entra pelo SSH, mas a base pede o seu utilizador.
Servidor no cliente 127.0.0.1 Não é o IP do servidor: o cliente fala com a porta local do túnel.
Se o túnel abre mas o cliente não liga, as causas habituais são três: o cliente aponta ao IP do servidor e não a 127.0.0.1; a porta local escolhida já está em uso (troque o número); ou o utilizador da base é escrito sem o prefixo da conta. Se o SSH nem entra, veja as quatro causas habituais.

Clientes que abrem o túnel por si

Não precisa de abrir o túnel à mão. O MySQL Workbench tem o método de ligação Standard TCP/IP over SSH, e o DBeaver tem um separador SSH na ligação: preenche o servidor e a porta do SSH, o utilizador e a palavra-passe do SSH, e depois os dados da base como se ela estivesse no mesmo computador. Na primeira ligação o SSH pergunta se confia na impressão digital do servidor: confirme-a e responda que sim. Quando puder, use uma chave SSH em vez de palavra-passe.

Túneis que caem? Acrescente -o ServerAliveInterval=60 ao comando para o SSH manter a ligação viva. Em Windows, o PuTTY faz o mesmo em «Connection, SSH, Tunnels». E se a sua rede muda de IP, o túnel não se queixa: basta voltar a abri-lo.

O túnel abre e a base continua inacessível? Diga-nos o cliente que usa e a mensagem de erro e vamos ver.

Abrir um pedido de suporte

VEJA TAMBÉM

Remote MySQL: o que faz e o que não faz

Acesso remoto ao PostgreSQL: o que funciona e o que não

Ligar-se à base com o MySQL Workbench

PRODUTO RECOMENDADO

Servidor VPS com acesso root

Recursos só seus, o sistema que escolher, reinstalação quando quiser. desde 456,30 MT/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?