Développement et bases de données
Connexion distante et sécurisée au serveur MySQL
Une connexion MySQL distante non chiffrée peut exposer les identifiants et les données échangées. Un tunnel SSH chiffre le trajet entre votre ordinateur et le serveur sans nécessiter d'autorisation directe de l'IP de votre ordinateur dans MySQL. Le tunnel ne ferme pas le port public du service géré.
Ce guide utilise le tunnel SSH disponible sur les plans avec accès SSH. Avant de continuer, activez et configurez l'accès SSH avec une clé Ed25519 protégée par une phrase de passe.
Connexion depuis un client MySQL compatible SSH
Si votre client de bases de données prend en charge SSH, il peut créer le tunnel automatiquement. En créant la connexion, configurez séparément les onglets SSH et MySQL.
Dans la configuration SSH, indiquez :
- Serveur SSH : le nom du serveur qui figure dans les informations techniques de l'hébergement. Évitez un domaine derrière un proxy ou qui pointe vers un autre fournisseur
- Port SSH :
93, sauf si les informations de votre service en indiquent un autre - Utilisateur SSH : votre utilisateur cPanel
- Authentification : clé privée Ed25519
- Clé privée : le chemin local de la clé dont vous avez autorisé la partie publique dans cPanel
Protégez la clé par une phrase de passe et utilisez l'agent de clés ou le stockage sécurisé du client pour la déverrouiller. N'enregistrez pas le mot de passe de cPanel dans la connexion.
Dans la configuration MySQL, indiquez :
- Serveur MySQL :
127.0.0.1 - Port MySQL :
3306 - Utilisateur et mot de passe MySQL : ceux d'un utilisateur limité à la base de données nécessaire
- Base de données : le nom complet créé dans cPanel
Le client ouvre d'abord la session SSH puis, à l'intérieur de ce tunnel, se connecte à MySQL sur 127.0.0.1. Avant d'accepter la première connexion SSH, vérifiez l'empreinte du serveur comme l'explique le guide en lien.
Créer le tunnel depuis le terminal de votre ordinateur
Vous pouvez aussi l'ouvrir avec OpenSSH. Cette commande s'exécute sur votre ordinateur, et non sur l'hébergement. Remplacez le serveur, l'utilisateur et le chemin de la clé :
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
Le terminal reste ouvert sans afficher de shell distant. Tant qu'il reste connecté, configurez votre client MySQL avec l'hôte 127.0.0.1, le port 13306 et l'utilisateur et le mot de passe de la base de données. Dans ce cas, n'activez pas en plus le tunnel intégré du client.
L'écoute est limitée à votre propre ordinateur. Ne remplacez pas 127.0.0.1 par 0.0.0.0, ce qui pourrait permettre l'utilisation du tunnel depuis d'autres ordinateurs du réseau. À la fin, fermez la connexion MySQL et appuyez sur Ctrl+C dans le terminal du tunnel.
Si la connexion échoue
- Address already in use : le port local 13306 est occupé. Choisissez un autre port local libre et utilisez ce même numéro dans le client MySQL.
- Permission denied (publickey) : vérifiez l'utilisateur SSH, la clé choisie et que sa partie publique est autorisée sur le compte.
- Administratively prohibited : le serveur refuse la redirection. Demandez à l'assistance si ce compte accepte les tunnels ; activer SSH ne signifie pas que n'importe quel type de redirection est autorisé.
- Access denied de MySQL : le tunnel fonctionne peut-être. Vérifiez les identifiants MySQL et l'association de l'utilisateur à la base, qui sont indépendants de SSH.
- Erreur d'empreinte du serveur : vérifiez le changement avec l'assistance avant de remplacer l'empreinte enregistrée.
Le chiffrement SSH protège le trajet jusqu'au serveur SSH. Cet exemple se connecte de là au MySQL local ; si la destination était un autre serveur, il faudrait aussi évaluer et protéger ce trajet.
Cela peut aussi vous aider
- MySQL à distance Autorisez une IP précise pour vous connecter à MySQL depuis un autre ordinateur, limitez les droits...
- Arrêter des requêtes MySQL en cours d'exécution Listez les requêtes MySQL encore ouvertes et arrêtez-les avec KILL QUERY depuis le terminal, avec my...
- Convertir une base de données MyISAM en InnoDB : changer de moteur de stockage Convertissez des tables MyISAM en InnoDB sur un clone vérifié, contrôlez l'espace, les index et les...
- Convertir une base de données utf8 en utf8mb4 Migrez des tables de utf8 vers utf8mb4 sur une base clonée, en vérifiant les collations et les index...
Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.