Desenvolvimento e bases de dados
Ligação remota e segura ao servidor MySQL
Uma ligação MySQL remota sem cifrar pode expor as credenciais e os dados trocados. Um túnel SSH cifra o troço entre o seu computador e o servidor sem precisar de uma autorização direta para o IP do seu computador no MySQL. O túnel não fecha a porta pública do serviço gerido.
Este guia utiliza o túnel SSH disponível nos planos com acesso SSH. Antes de continuar, ative e configure o acesso SSH com uma chave Ed25519 protegida por uma frase-passe.
Ligação a partir de um cliente MySQL com suporte SSH
Se o seu cliente de bases de dados incluir suporte SSH, pode criar o túnel automaticamente. Ao criar a ligação, configure em separado os separadores de SSH e de MySQL.
Na configuração SSH, indique:
- Servidor SSH: o nome do servidor que consta dos dados técnicos do alojamento. Evite um domínio atrás de um proxy ou que aponte para outro fornecedor
- Porta SSH:
93, salvo se os dados do seu serviço indicarem outra - Utilizador SSH: o seu utilizador do cPanel
- Autenticação: chave privada Ed25519
- Chave privada: o caminho local da chave cuja parte pública autorizou no cPanel
Proteja a chave com uma frase-passe e utilize o agente de chaves ou o armazenamento seguro do cliente para a desbloquear. Não guarde a palavra-passe do cPanel na ligação.
Na configuração MySQL, indique:
- Servidor MySQL:
127.0.0.1 - Porta MySQL:
3306 - Utilizador e palavra-passe MySQL: os de um utilizador limitado à base de dados necessária
- Base de dados: o nome completo criado no cPanel
O cliente abre primeiro a sessão SSH e, dentro desse túnel, liga-se ao MySQL em 127.0.0.1. Antes de aceitar a primeira ligação SSH, verifique a impressão digital do servidor, como explica o guia indicado.
Criar o túnel a partir do terminal do seu computador
Também pode abri-lo com o OpenSSH. Este comando é executado no seu computador, não dentro do alojamento. Substitua o servidor, o utilizador e o caminho da chave:
ssh -N -T -p 93 -i ~/.ssh/id_ed25519 \ -o ExitOnForwardFailure=yes \ -L 127.0.0.1:13306:127.0.0.1:3306 \ usuario_cpanel@servidor.example.com
O terminal fica aberto sem mostrar uma shell remota. Enquanto continuar ligado, configure o seu cliente MySQL com o host 127.0.0.1, a porta 13306 e o utilizador e a palavra-passe da base de dados. Neste caso, não ative também o túnel integrado do cliente.
A escuta limita-se ao seu próprio computador. Não substitua 127.0.0.1 por 0.0.0.0, que poderia permitir a utilização do túnel a partir de outros computadores da rede. Ao terminar, feche a ligação MySQL e prima Ctrl+C no terminal do túnel.
Se não ligar
- Address already in use: a porta local 13306 está ocupada. Escolha outra porta local livre e use esse mesmo número no cliente MySQL.
- Permission denied (publickey): verifique o utilizador SSH, a chave escolhida e que a sua parte pública está autorizada na conta.
- Administratively prohibited: o servidor rejeita o reencaminhamento. Pergunte ao suporte se essa conta admite túneis; ativar o SSH não significa que qualquer modalidade de reencaminhamento seja permitida.
- Access denied do MySQL: o túnel pode estar a funcionar. Reveja as credenciais MySQL e a associação do utilizador à base de dados, que são independentes do SSH.
- Erro de impressão digital do servidor: confirme a alteração com o suporte antes de substituir a impressão digital guardada.
A cifra SSH protege o troço até ao servidor SSH. Este exemplo liga-se a partir daí ao MySQL local; se o destino fosse outro servidor, teria de avaliar e proteger também esse troço.
Também lhe pode ser útil
- MySQL remoto Autorize um IP concreto para ligar ao MySQL a partir de outro equipamento, limite as permissões do u...
- Clonar uma base de dados Duplique uma base de dados MySQL criando primeiro o destino e as suas permissões no cPanel e copiand...
- Consultar a versão do MySQL e verificar a compatibilidade Identifique a versão real do servidor MySQL que a sua aplicação utiliza, reveja a compatibilidade e...
- Converter uma base de dados MyISAM para InnoDB, mudando o motor de armazenamento Converta tabelas MyISAM para InnoDB sobre um clone verificado, reveja o espaço, os índices e as linh...
Algo não bate certo ou mudou? Diga-nos e revemos.