公司数据库需要通过 JumpServer 连接,百度了一下,要用这种方法连接:
结果是:
通过 nmap 发现 22 这个端口是 filtered 的,应该没法通过 ssh 连接跳板机
这咋办,有没有其他方式连接?谢谢!
我对比了一下我之前通过 ssh 连接跳板机的代码,发现了与你的代码的不同之处,你可以尝试把不同部分加上再运行,希望能帮到你
# 在实例化SSHTunnelForwarder加上 local_bind_address=('127.0.0.1', 22) # 以下为伪代码 tunnel = SSHTunnelForwarder(其他参数,local_bind_address=('127.0.0.1', 22)) # pymysql连接的时候host和port要修改为tunnel的host和port # 以下为伪代码 conn = pymysql.connect(host=tunnel.local_bind_host,port=tunnel.local_bind_port,其他参数)
试试这个
from sshtunnel import SSHTunnelForwarder import pymysql jump_host = 'jump_host_ip' jump_port = 22 jump_user = 'jump_username' jump_key = 'path_to_jump_private_key' dest_host = 'mysql_host_ip' dest_port = 3306 dest_user = 'mysql_username' dest_password = 'mysql_password' # 建立SSH隧道 with SSHTunnelForwarder( (jump_host, jump_port), ssh_username=jump_user, ssh_pkey=jump_key, remote_bind_address=(dest_host, dest_port) ) as tunnel: # 连接MySQL数据库 conn = pymysql.connect( host='127.0.0.1', port=tunnel.local_bind_port, user=dest_user, passwd=dest_password, db='your_database' ) # 执行SQL查询 with conn.cursor() as cursor: cursor.execute('SELECT * FROM your_table') result = cursor.fetchall() for row in result: print(row) # 关闭连接 conn.close()