Python隧道連線內網資料庫

2021-10-01 07:16:26 字數 2688 閱讀 3208

# -*- coding: utf-8 -*-

import pymysql as mysql

from sshtunnel import sshtunnelforwarder # pip install sshtunnel

import pandas as pd

"""@author: tli

@file: 本地連線內網資料庫

@time: 2019-12-06 10:21

@desc:

"""class

sshconnect

(object):

"""本地ssh私鑰校驗連線內網資料庫demo"""

def__init__

(self)

: self.server = sshtunnelforwarder(

('***.xx.xx.***',22

),# 伺服器(跳板機)ip和埠

ssh_username=

"xx"

,# ssh使用者名稱

ssh_pkey=

"/users/***/.ssh/id_rsa"

,# 私鑰檔案絕對定位

ssh_private_key_password="",

# 密碼

remote_bind_address=

("***.xx.xx.***"

,3306))

# 內網資料庫ip及埠

self.server.start(

)# 啟動連線管道

self.db = mysql.connect(host=

'127.0.0.1'

,# 這裡固定填這個不用改

port=self.server.local_bind_port,

# 這裡固定填這個不用改

user=

"***"

,# 連線資料庫使用者名稱

passwd=

"************"

,# 連線資料庫密碼

db="***x"

)# 連線的庫名

self.cursor = self.db.cursor(

)# 獲取資料庫游標

def__del__

(self)

:try

: self.cursor.close(

)# 關閉游標

self.db.close(

)# 關閉資料庫連線

self.server.close(

)except exception:

pass

defdata_handle

(self)

: self.cursor.execute(

"select * from *** where id = 1"

) ret = self.cursor.fetchone(

)print

(ret)

ret_df = pd.read_sql(

"select ***,***,*** from *** where id in (1,2,3,4,5)"

, self.db)

ret_df.to_csv(

'users/***/desktop/***.csv'

, index=0)

class

codeconnect

(object):

"""本地ssh密碼連線內網資料庫demo"""

def__init__

(self)

: self.server = sshtunnelforwarder(

('***.xx.xx.***',22

),# 伺服器(跳板機)ip和埠

ssh_username=

'***'

,# 伺服器(跳板機)使用者名稱

ssh_password=

'******'

,# 伺服器(跳板機)密碼

remote_bind_address=

('***.xx.xx.***'

,3306))

# 內網資料庫ip及埠

self.server.start(

)# 啟動連線管道

self.db = mysql.connect(host=

'127.0.0.1'

, port=self.server.local_bind_port,

user=

'***'

, passwd=

'***xx'

, db=

'***'

) self.cursor = self.db.cursor(

)# 獲取資料庫游標

def__del__

(self)

:try

: self.cursor.close(

) self.db.close(

) self.server.close(

)except exception:

pass

ssh隧道連線內網mysql

一般為了安全,mysql伺服器 假設是a 只會設定為內網可訪問,然後對外部署一台跳板機 假設是b 現在外網客戶端,怎麼訪問a呢?利用serverb將本地3307埠監聽到的訊息本地 到servera的3306埠 ssh fn serverb user serverb ip p 2020 l 3307 ...

通過SSH隧道連線遠端MySQL資料庫

命令 ssh ncpf root 111.111.111.111 l 3316 127.0.0.1 3306 引數 c 使用壓縮功能,是可選的,加快速度。p 用乙個非特權埠進行出去的連線。f 一旦ssh完成認證並建立port forwarding,則轉入後台執行。n 不執行遠端命令。該引數在只開啟 ...

通過ssh管道連線內網資料庫

基於 python 3 python 2 還沒測試 import pymysql as mysql from sshtunnel import sshtunnelforwarder server sshtunnelforwarder ip port 跳板機ip及埠 ssh username user...