Podemos acessar o MySQL com segurança em um sistema remoto conectando o MySQL pelo túnel SSH. Este tutorial fornece as etapas necessárias para se conectar remotamente ao servidor MySQL pelo túnel SSH usando Putty no Windows e SSH em sistemas Linux. Ele mostra como encaminhar a porta local do MySQL, ou seja, 3306 para a porta remota do MySQL, ou seja, 3306 via SSH porta 22 do sistema remoto. Isso garante que estamos nos comunicando com segurança com o servidor remoto pela porta 22, conectando a porta local 3306 à porta 3306 no servidor remoto.
Pré-requisitos
Um servidor remoto com servidor MySQL instalado nele. Você pode seguir Como instalar o MySQL 8 no Ubuntu 20.04 LTS.
Além disso, certifique-se de que a porta 22 esteja aberta e a porta 3306 esteja bloqueada pelo firewall no sistema remoto com o servidor MySQL. Este tutorial também assume que o servidor MySQL não está rodando no sistema local. Isso garante que a porta 3306 no sistema local esteja livre para encaminhamento de porta.
Também precisamos de acesso SSH ao sistema no qual o servidor MySQL está instalado e em execução. Podemos usar o nome de usuário e senha SSH ou nome de usuário SSH e a chave para se conectar ao sistema remoto.
Instale o Putty no Windows 10
Podemos usar o Putty nos sistemas Windows para acessar o servidor MySQL instalado em um servidor remoto. Caso você esteja usando um sistema baseado em Linux, você pode ir para a seção SSH.
Abra a página oficial de download do Putty para baixar o instalador MSI, conforme destacado na Fig 1.

Figura 1
Também podemos usar o executável Putty sem instalá-lo. Role a página de download para baixar o arquivo executável.
Agora inicie o Putty. As opções padrão do Putty devem ser semelhantes às da Fig 2.

Figura 2
Conexão segura ao MySQL usando Putty
Esta seção fornece as etapas para usar o Putty para conectar-se com segurança ao MySQL pelo túnel SSH a partir de um sistema remoto. Agora preencha os detalhes do host remoto conforme mostrado na Fig 3.

Figura 3
Além disso, clique em Conexão -> SSH -> Túneis conforme destacado na Fig 3. Agora preencha os detalhes de encaminhamento da porta SSH conforme mostrado na Fig 4. A porta de origem deve ser definida como 3306 e Destino deve ser definido como 127.0.0.1:3306 .

Figura 4
Clique no Botão Adicionar após preencher a porta de origem e destino. Ele atualizará as portas encaminhadas como mostrado na Fig 4. Além disso, clique na opção Auth e escolha a chave SSH conforme mostrado na Fig 5. Certifique-se de ter gerado a chave privada usando Puttygen.

Figura 5
Agora clique no Botão Abrir para abrir a conexão. Ele mostrará o alerta de segurança pela primeira vez, conforme mostrado na Fig 6.

Figura 6
Clique no Botão Sim para aceitar a conexão. Ele solicitará a senha caso você tenha definido ao gerar a chave privada. Em uma conexão bem-sucedida, ele mostrará os detalhes do sistema remoto conforme mostrado na Fig 7.

Figura 7
Além de conectar por SSH, ele também encaminhou a porta local 3306 para a porta 3306 no servidor remoto. Não feche o Putty, pois ele mantém o túnel SSH aberto para o servidor remoto. Agora inicie qualquer MySQL Client e tente se conectar ao servidor MySQL remoto. Eu usei o MySQL Workbench para fins de demonstração. A tela inicial do Workbench deve ser semelhante à Fig 8. Você também pode seguir Usando o Workbench para conectar-se ao servidor MySQL remoto pelo túnel SSH.

Figura 8
Agora clique no Ícone de adição para criar uma nova Conexão Local conforme destacado na Fig 8. Ele mostrará as opções para Adicionar Conexão conforme mostrado na Fig 9.

Figura 9
Forneça um nome de conexão e mantenha o nome do host como 127.0.0.1 e a porta como 3306 conforme mostrado na Fig 9. Agora clique em Test Connection para testar a conexão com o servidor MySQL remoto pelo túnel SSH. Ele solicitará a senha conforme mostrado na Fig 10 caso você não a tenha armazenado no Vault.

Figura 10
Agora preencha a senha e clique no Botão OK para testar a conexão. Ele deve mostrar uma mensagem de sucesso no sucesso da conexão, conforme mostrado na Fig 11.

Figura 11
Agora clique no Botão OK para fechar a mensagem de conexão e clique novamente no Botão OK para fechar o assistente de conexão. Ele adicionará a conexão à biblioteca de conexões, conforme mostrado na Fig 12.

Figura 12
Agora clique na conexão recém-adicionada. Ele deve se conectar ao servidor remoto e listar os bancos de dados do servidor MySQL remoto, conforme mostrado na Fig 13.

Figura 13
Agora podemos trabalhar no servidor MySQL remoto usando o Workbench no sistema local. Além disso, feche o Workbench e o Putty para encerrar a conexão após concluir o trabalho no servidor MySQL remoto.
Conexão segura ao MySQL usando SSH
Podemos nos conectar ao servidor MySQL remoto encaminhando a porta local 3306 para a porta remota 3306 usando o comando SSH conforme mostrado abaixo. Semelhante à seção anterior, certifique-se de que a porta local 3306 esteja livre.
Observações :Os comandos abaixo mencionados foram testados no Ubuntu Desktop. As etapas e comandos devem ser semelhantes em outros sistemas Linux.
# Shutdown local MySQL - Else use a different local port
sudo service mysql stop
# Install MySQL Client - If required
sudo apt install mysql-client
# Port Forwarding - Command
ssh -N -L 3306:127.0.0.1:3306 [USER]@[SERVER_IP]
# OR
ssh -N -L 3306:127.0.0.1:3306 -i [SSH Key] [USER]@[SERVER_IP]
# Port Forwarding - Example
ssh -N -L 3306:127.0.0.1:3306 [email protected]
# OR
ssh -N -L 3306:127.0.0.1:3306 -i example.pem [email protected]
Os comandos mencionados acima abrem o túnel SSH e conectam a porta local 3306 à porta remota 3306. Agora podemos conectar ao servidor MySQL remoto usando o cliente MySQL. Você pode consultar a seção anterior para usar o MySQL Workbench instalado no sistema local.
Além disso, consulte a Fig 14 e a Fig 15 para abrir o túnel SSH e conectar-se ao servidor MySQL remoto.

Figura 14

Figura 15
Resumo
Este tutorial forneceu as etapas necessárias para conectar-se ao servidor MySQL remoto sobre o túnel SSH para sistemas Windows e Linux.