ホームページ >データベース >mysql チュートリアル >同じマシン上で SSH トンネリングとキー ペアを使用して Python を MySQL サーバーに安全に接続する方法

同じマシン上で SSH トンネリングとキー ペアを使用して Python を MySQL サーバーに安全に接続する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-04 00:04:11447ブラウズ

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

SSH トンネリング経由で Python を MySQL に接続する

概要

Python と MySQL の間の安全な接続の確立MySQL サーバーはデータ交換と管理に不可欠です。 SSH トンネリングを利用すると、クライアントとサーバーの間に暗号化されたチャネルが作成され、これらの接続のセキュリティを強化できます。この記事では、Python を使用してこのようなトンネリング接続を確立する方法について説明します。

質問

Python が SSH トンネル経由で MySQL サーバーに接続できるようにするにはどうすればよいですか。 SSH トンネル ホストと MySQL サーバーが同じ上の SSH キー ペアmachine?

回答

SSH TunnelForwarder の使用

次のアプローチでは、sshtunnel ライブラリを利用してトンネルを確立し、接続します。を使用して MySQL に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()

主要コンポーネント

  • SSH トンネル フォワーダー: このライブラリは SSH 接続を管理し、クライアントとSSH server.
  • ホスト キー ペア: これらのキーは、SSH 接続を認証し、安全な通信を確保するために使用されます。
  • SSHTunnelForwarder.remote_bind_address: 場所を指定します。トンネルは MySQL に接続しますserver.
  • PyMySQL: トンネルのローカル バインド ポートを使用して MySQL 接続を確立するために使用されます。

以上が同じマシン上で SSH トンネリングとキー ペアを使用して Python を MySQL サーバーに安全に接続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。