Maison >base de données >tutoriel mysql >Comment connecter en toute sécurité Python à un serveur MySQL à l'aide du tunnel SSH et des paires de clés sur la même machine ?

Comment connecter en toute sécurité Python à un serveur MySQL à l'aide du tunnel SSH et des paires de clés sur la même machine ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-04 00:04:11447parcourir

How to Securely Connect Python to a MySQL Server Using SSH Tunneling and Key Pairs on the Same Machine?

Connexion de Python à MySQL via le tunneling SSH

Introduction

Établissement de connexions sécurisées entre Python et Les serveurs MySQL sont essentiels pour l'échange et la gestion des données. En utilisant le tunneling SSH, nous pouvons améliorer la sécurité de ces connexions en créant un canal crypté entre le client et le serveur. Cet article explore comment établir une telle connexion tunnel à l'aide de Python.

Question

Comment pouvons-nous permettre à Python de se connecter à un serveur MySQL via un tunnel SSH, facilité par Paires de clés SSH, avec l'hôte du tunnel SSH et le serveur MySQL sur le même machine ?

Réponse

Utilisation de SSH TunnelForwarder

L'approche suivante utilise la bibliothèque sshtunnel pour établir le tunnel, puis se connecte vers MySQL en utilisant pymysql :

import pymysql
import paramiko
import pandas as pd
from paramiko import SSHClient
from sshtunnel import SSHTunnelForwarder

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'

# Create the SSH tunnel
with SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_pkey=mypkey,
        remote_bind_address=(sql_hostname, sql_port)) as tunnel:

    # Connect to MySQL
    conn = pymysql.connect(host='127.0.0.1', user=sql_username,
            passwd=sql_password, db=sql_main_database,
            port=tunnel.local_bind_port)

    # Execute a query
    query = '''SELECT VERSION();'''
    data = pd.read_sql_query(query, conn)

    # Close the connection
    conn.close()

Clé Composants

  • SSH Tunnel Forwarder : Cette bibliothèque gère la connexion SSH et établit un tunnel entre le client et le serveur SSH.
  • Paires de clés d'hôte : ces clés sont utilisées pour authentifier la connexion SSH et garantir la sécurité communication.
  • SSHTunnelForwarder.remote_bind_address : Spécifie où le tunnel se connectera au serveur MySQL.
  • PyMySQL : Utilisé pour établir une connexion MySQL à l'aide le port de liaison local du 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