Maison > base de données > tutoriel mysql > Comment se connecter en toute sécurité à un serveur MySQL distant via un tunnel SSH en PHP ?

Comment se connecter en toute sécurité à un serveur MySQL distant via un tunnel SSH en PHP ?

Patricia Arquette
Libérer: 2024-11-29 03:33:14
original
311 Les gens l'ont consulté

How to Securely Connect to a Remote MySQL Server via SSH Tunnel in PHP?

Connexion sécurisée à un serveur MySQL via SSH à l'aide de PHP

La connexion à un serveur MySQL distant via SSH offre une sécurité supplémentaire en cryptant la connexion. En PHP, la fonction mysqli_connect() permet la connexion aux serveurs MySQL tunnelés SSH. Cependant, lorsqu'ils tentent d'établir une connexion à l'aide de ssh2_tunnel(), les développeurs rencontrent souvent l'erreur "mysqli_connect() s'attend à ce que le paramètre 6 soit une chaîne, ressource donnée."

Configuration du tunnel SSH

L'approche recommandée pour résoudre ce problème consiste à configurer un tunnel SSH. Suivez ces étapes pour créer un tunnel SSH à l'aide des outils de ligne de commande :

  1. Ouvrez le client SSH : Ouvrez votre client SSH préféré (par exemple, PuTTY) et établissez une connexion avec votre télécommande. Machine Linux.
  2. Créez le tunnel SSH : Entrez la commande suivante pour créer un tunnel à partir du port de votre poste de travail local (par exemple, 3307) à l'adresse IP et au port distant du serveur MySQL (par exemple, 10.3.1.55:3306) :
ssh -fNg -L 3307:10.3.1.55:3306 username@ssh-jumpbox.com
Copier après la connexion
  1. Configurer le serveur SSH : Si nécessaire, configurez le serveur SSH pour autoriser la redirection de port local en éditant le fichier /etc/ssh/sshd_config et en ajoutant la ligne suivante :
AllowTcpForwarding yes
Copier après la connexion
  1. Redémarrez le serveur SSH : Redémarrez le serveur SSH pour appliquer les modifications :
sudo systemctl restart sshd
Copier après la connexion

Connexion PHP

Une fois le tunnel SSH établi, vous pouvez vous connecter au serveur MySQL à l'aide de PHP :

$mysqli = new mysqli('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 'dbname', 3307);

if ($mysqli->connect_error) {
  die('Connect Error (' . $mysqli->connect_errno . ') '
      . $mysqli->connect_error);
}
Copier après la connexion

Ce code se connecte à la base de données MySQL hébergée à 127.0.0.1:3307, en utilisant le nom d'utilisateur, le mot de passe, le nom de la base de données et le numéro de port configurés pour SSH. tunnel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal