Maison >base de données >tutoriel mysql >Comment connecter en toute sécurité Python à un serveur MySQL distant via le tunneling SSH ?

Comment connecter en toute sécurité Python à un serveur MySQL distant via le tunneling SSH ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-01 15:02:10866parcourir

How to Securely Connect Python to a Remote MySQL Server via SSH Tunneling?

Connexion de Python à MySQL via le tunneling SSH

Établir une connexion entre Python et un serveur MySQL distant via un tunnel SSH est essentiel pour sécuriser les données récupération et manipulation. Bien que les connexions MySQL de base soient simples, la création d'un tunnel SSH chiffré ajoute une couche de sécurité supplémentaire.

Voici comment permettre à Python de se connecter à MySQL via un tunnel SSH :

import pymysql
import paramiko
import pandas as pd
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder
from os.path import expanduser

home = expanduser('~')
mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath)

sql_hostname = 'sql_hostname'
sql_username = 'sql_username'
sql_password = 'sql_password'
sql_main_database = 'db_name'
sql_port = 3306
ssh_host = 'ssh_hostname'
ssh_user = 'ssh_username'
ssh_port = 22
sql_ip = '1.1.1.1.1'

with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_pkey=mypkey,
        remote_bind_address=(sql_hostname, sql_port)) as tunnel:
    conn = pymysql.connect(host='127.0.0.1', user=sql_username,
            passwd=sql_password, db=sql_main_database,
            port=tunnel.local_bind_port)
    query = '''SELECT VERSION();'''
    data = pd.read_sql_query(query, conn)
    conn.close()

Ce code établit un tunnel SSH entre la machine locale et le serveur MySQL distant à l'aide de SSHTunnelForwarder. La connexion SSH utilise une clé privée pour l'authentification, garantissant une sécurité renforcée.

Une fois le tunnel établi, une connexion Python MySQL est établie à l'adresse locale du tunnel, permettant un accès sécurisé à la base de données MySQL. Des requêtes peuvent ensuite être exécutées pour récupérer ou manipuler des données du serveur.

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