python sshtunnel 简单介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()

 

以上是关于python sshtunnel 简单介绍的主要内容,如果未能解决你的问题,请参考以下文章

Python用MySQLdb, pymssql 模块通过sshtunnel连接远程数据库

使用 python sshtunnel 的隧道

python sshtunnel没有启动服务器给定凭据

Python sshtunnel - 如何验证 SSH 连接?

通过Python用pymysql,通过sshtunnel模块ssh连接远程数据库。

sshtunnel:我可以使用 CLI、DBeaver 或 Paramiko 访问 ssh 网关,但不能使用 sshtunnel