Skip to content
VDS · Bases de données

Accès distant à la base de données : comment ne pas l'exposer à tout Internet

Deux façons de se connecter à une base de données sur un VDS depuis votre ordinateur de travail : le tunnel SSH et le port ouvert avec restrictions. Que choisir et comment vérifier.

Mis à jour le 23 août 2026

Une base de données à l'écoute sur 0.0.0.0 avec le mot de passe root ne survit que jusqu'au premier scan — et toute la plage d'adresses est scannée en continu. Dans le même temps, se connecter à la base de données depuis un ordinateur portable avec un client est pratique et souvent nécessaire. Il existe deux méthodes, et une seule n'a aucun inconvénient.

Méthode 1 : tunnel SSH (recommandée)

La base de données reste liée à 127.0.0.1, et rien d'autre que SSH n'est exposé vers l'extérieur. Sur votre propre ordinateur :

ssh -L 5433:127.0.0.1:5432 root@YOUR_ADDRESS -N
ssh -L 3307:127.0.0.1:3306 root@YOUR_ADDRESS -N

Connectez-vous maintenant à 127.0.0.1:5433 dans DBeaver, TablePlus ou psql. Du point de vue de la base de données, cela ressemble à une connexion locale.

La plupart des clients peuvent configurer le tunnel eux-mêmes : les paramètres de connexion disposent d'un onglet « SSH ». Indiquez l'adresse de la machine depuis l'« Aperçu » du panneau /hosting/vds/m/<id> et votre clé.

L'avantage de cette méthode : vous n'avez rien à modifier dans la configuration de la base de données ni du pare-feu.

Méthode 2 : un port ouvert avec restrictions

C'est un dernier recours — pour le cas où un service externe avec une adresse statique connue se connecte. Chaque étape ci-dessous est obligatoire :

ufw allow from 203.0.113.10 to any port 5432 proto tcp

Pour PostgreSQL : listen_addresses = '*' et la ligne hostssl all all 203.0.113.10/32 scram-sha-256 dans pg_hba.conf. Pour MySQL : bind-address = 0.0.0.0 et un utilisateur lié à une adresse spécifique :

CREATE USER 'app'@'203.0.113.10' IDENTIFIED BY 'long-password';
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'203.0.113.10';

Sans TLS, une telle connexion envoie les données en clair. ufw allow 5432 sans préciser de source, c'est exactement ce que signifie « l'ouvrir à tout Internet ».

Vérification

Depuis une autre machine :

nmap -Pn -p 3306,5432,6379,27017 YOUR_ADDRESS

La réponse attendue est filtered ou closed sur tous les ports. En local, vérifiez ce qui écoute et où :

ss -tulpn | grep -E '3306|5432|6379'

Erreurs courantes

SymptômeCause
Le client ne se connecte pas via le tunnelLe port local est occupé — choisissez-en un autre
Host ... is not allowed to connectL'utilisateur MySQL est lié à localhost
no pg_hba.conf entry for hostIl n'y a pas de règle pour votre adresse
Le port est ouvert mais rien ne répondLa base de données n'écoute que sur 127.0.0.1
Cela a fonctionné, puis s'est arrêtéVotre fournisseur vous attribue une adresse dynamique — un argument de plus pour le tunnel

Les machines n'ont pas d'IPv6, ni de seconde adresse. Écrivez toutes les règles pour l'unique adresse IPv4 publique de l'« Aperçu » — il n'y aura aucune confusion avec deux piles.