> 데이터 베이스 > MySQL 튜토리얼 > Python에서 SSH 터널링을 통해 MySQL에 안전하게 연결하는 방법은 무엇입니까?

Python에서 SSH 터널링을 통해 MySQL에 안전하게 연결하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-21 16:25:10
원래의
492명이 탐색했습니다.

How to Securely Connect to MySQL via SSH Tunneling in Python?

SSH 터널링을 통해 Python을 MySQL에 연결

Python 애플리케이션에서는 MySQL 데이터베이스에 액세스해야 하는 경우가 많습니다. 보안 연결을 설정하기 위한 한 가지 기술에는 SSH 터널을 사용하는 것이 포함됩니다. 이 문서에서는 SSH 키 쌍을 활용하여 SSH 터널을 생성하고 Python을 통해 MySQL 연결을 촉진하는 방법을 살펴봅니다.

다음 Python 코드를 고려하세요.

import MySQLdb
db = MySQLdb.connect(host="sql.domain.com",
     user="dev", 
      passwd="*******", 
      db="appdb")
로그인 후 복사

위 코드는 직접 연결을 설정합니다. MySQL 서버에 대한 보안 강화를 위해 SSH 터널이 필요한 시나리오가 있을 수 있습니다. SSH 터널은 연결을 암호화하여 통신을 위한 보안 채널을 제공합니다.

Python을 사용하여 SSH 터널을 설정하고 MySQL에 연결하려면 다음 단계를 따르세요.

  1. 가져오기 필수 모듈: Python 스크립트에 pymysql, paramiko, pandas 및 sshtunnel.
  2. SSH 연결 설정: paramiko를 사용하여 SSH 클라이언트를 생성하고 SSH 서버에 연결합니다. 호스트, 사용자 이름 및 개인 키 경로를 지정합니다.
  3. SSH 터널 구성: sshtunnel 모듈을 활용하여 SSH TunnelForwarder 객체를 생성합니다. 원격 바인딩 주소를 MySQL 서버 호스트 이름 및 포트로 정의합니다.
  4. MySQL 연결 설정: pymysql을 사용하여 SSH 터널을 통해 로컬 MySQL 서버에 연결합니다. 포트를 SSH 터널의 로컬 바인드 포트로 지정합니다.
  5. 쿼리 실행: 설정된 MySQL 연결을 통해 평소처럼 SQL 쿼리를 실행합니다.
  6. 연결 닫기 : 작업을 완료한 후 MySQL 및 SSH 연결을 종료하여 릴리스하세요. resources.

다음은 이러한 단계를 보여주는 예제 코드 조각입니다.

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

# SSH Parameters
home = expanduser('~')
mypkey = paramiko.RSAKey.from_private_key_file(home + pkeyfilepath)
ssh_host = 'ssh_hostname'
ssh_user = 'ssh_username'
ssh_port = 22

# MySQL Parameters
sql_hostname = 'sql_hostname'
sql_username = 'sql_username'
sql_password = 'sql_password'
sql_main_database = 'db_name'
sql_port = 3306

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)
    # Perform database operations here...
    conn.close()
로그인 후 복사

이러한 기술을 구현하면 Python의 SSH 터널을 통해 MySQL 서버에 안전하게 연결할 수 있습니다. 이 접근 방식은 데이터 기밀성과 무결성을 보장하므로 향상된 보안 조치가 필요한 애플리케이션에 적합합니다.

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

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