> 데이터 베이스 > MySQL 튜토리얼 > 동일한 시스템에서 SSH 터널링과 키 쌍을 사용하여 Python을 MySQL 서버에 안전하게 연결하는 방법은 무엇입니까?

동일한 시스템에서 SSH 터널링과 키 쌍을 사용하여 Python을 MySQL 서버에 안전하게 연결하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-04 00:04:11
원래의
455명이 탐색했습니다.

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 서버.
  • 호스트 키 쌍: 이 키는 SSH 연결을 인증하고 보안 통신을 보장하는 데 사용됩니다.
  • SSHTunnelForwarder.remote_bind_address: 터널이 MySQL 서버에 연결할 위치를 지정합니다.
  • PyMySQL: 터널의 로컬 바인딩을 사용하여 MySQL 연결을 설정하는 데 사용됩니다. 항구.

위 내용은 동일한 시스템에서 SSH 터널링과 키 쌍을 사용하여 Python을 MySQL 서버에 안전하게 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿