Heim >Datenbank >MySQL-Tutorial >Wie kann ich über einen SSH-Tunnel in PHP eine sichere Verbindung zu einem Remote-MySQL-Server herstellen?

Wie kann ich über einen SSH-Tunnel in PHP eine sichere Verbindung zu einem Remote-MySQL-Server herstellen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 03:33:14307Durchsuche

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

Sichere Verbindung zu einem MySQL-Server über SSH mit PHP

Die Verbindung zu einem Remote-MySQL-Server über SSH bietet zusätzliche Sicherheit durch die Verschlüsselung der Verbindung. In PHP ermöglicht die Funktion mysqli_connect() die Verbindung zu SSH-getunnelten MySQL-Servern. Beim Versuch, eine Verbindung mit ssh2_tunnel() herzustellen, stoßen Entwickler jedoch häufig auf den Fehler „mysqli_connect() erwartet, dass Parameter 6 ein String ist, Ressource angegeben.“

SSH-Tunnelkonfiguration

Der empfohlene Ansatz zur Lösung dieses Problems besteht darin, einen SSH-Tunnel einzurichten. Befolgen Sie diese Schritte, um mit Befehlszeilentools einen SSH-Tunnel zu erstellen:

  1. Öffnen Sie den SSH-Client:Öffnen Sie Ihren bevorzugten SSH-Client (z. B. PuTTY) und stellen Sie eine Verbindung zu Ihrer Fernbedienung her Linux-Maschine.
  2. Erstellen Sie den SSH-Tunnel: Geben Sie den folgenden Befehl ein, um einen Tunnel von Ihrem lokalen Workstation-Port aus zu erstellen (z. B. 3307) an die Remote-IP-Adresse und den Port des MySQL-Servers (z. B. 10.3.1.55:3306):
ssh -fNg -L 3307:10.3.1.55:3306 username@ssh-jumpbox.com
  1. Konfigurieren Sie den SSH-Server: Konfigurieren Sie bei Bedarf den SSH-Server so, dass er die Weiterleitung lokaler Ports zulässt, indem Sie die Datei /etc/ssh/sshd_config bearbeiten Datei und fügen Sie die folgende Zeile hinzu:
AllowTcpForwarding yes
  1. Starten Sie den SSH-Server neu: Starten Sie den SSH-Server neu, um die Änderungen zu übernehmen:
sudo systemctl restart sshd

PHP-Verbindung

Sobald der SSH-Tunnel eingerichtet ist, können Sie Stellen Sie mit PHP eine Verbindung zum MySQL-Server her:

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

Dieser Code stellt eine Verbindung zur MySQL-Datenbank her, die unter 127.0.0.1:3307 gehostet wird, und zwar unter Verwendung des angegebenen Datenbank-Benutzernamens, Passworts, Datenbanknamens und der für die konfigurierten Portnummer SSH-Tunnel.

Das obige ist der detaillierte Inhalt vonWie kann ich über einen SSH-Tunnel in PHP eine sichere Verbindung zu einem Remote-MySQL-Server herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn