1. 程式人生 > >python sshtunnel 簡單介紹

python sshtunnel 簡單介紹

CA lose table rom row 登錄 int lena postgre

背景,公司的很多服務包括數據庫訪問都需要通過跳板機訪問,為日常工作及使用帶來了麻煩,特別數python直接操作數據更是麻煩了,所以一直想實現python 通過跳板機訪問數據庫的操作。

安裝

pip3.6 install sshtunnel

使用 sshtunnel 跳轉登錄數據庫

鏈接postgresql,其他數據類似

# FileName : pgconn.py
# Author   : Adil
# DateTime : 2018/6/15 15:19
# SoftWare : PyCharm
import paramiko
import psycopg2

from sshtunnel import SSHTunnelForwarder # 獲取密鑰 private_key = paramiko.RSAKey.from_private_key_file(/Users/yyj/.ssh/id_rsa) with SSHTunnelForwarder( # 指定ssh登錄的跳轉機的address ssh_address_or_host = (jumphost,22), # 設置密鑰 ssh_pkey = private_key, # 如果是通過密碼訪問,可以把下面註釋打開,將密鑰註釋即可。 #
ssh_password = "password" # 設置用戶 ssh_username = username, # 設置數據庫服務地址及端口 remote_bind_address= (dbhost,dbport)) as server: conn = psycopg2.connect(database=dbname, user=username, password=password, host
=127.0.0.1, # 因為上面沒有設置 local_bind_address,所以這裏必須是127.0.0.1,如果設置了,取設置的值就行了。 port=server.local_bind_port) # 這裏端口也一樣,上面的server可以設置,沒設置取這個就行了 print(conn) cur = conn.cursor() # 執行查詢,查看結果,驗證數據庫是否鏈接成功。 cur.execute("select * from t_table_data limit 1") rows = cur.fetchone() print(rows) conn.close()

python sshtunnel 簡單介紹