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
Patricia Arquetteoriginal
2024-11-29 03:33:14382parcourir

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
  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
  1. Redémarrez le serveur SSH : Redémarrez le serveur SSH pour appliquer les modifications :
sudo systemctl restart sshd

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);
}

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!

Déclaration:
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