python sshtunnel 簡單介紹


背景,公司的很多服務包括數據庫訪問都需要通過跳板機訪問,為日常工作及使用帶來了麻煩,特別數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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM