国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 通過SSHTunnelForwarder隧道連接redis的方法

2020-02-16 01:13:44
字體:
來源:轉載
供稿:網友

背景:我司Redis服務器使用的亞馬遜服務,本地需要通過跳板機,然后才有權限訪問Redis服務。

連接原理:使用SSHTunnelForwarder模塊,通過本地22端口ssh到跳板機,然后本地開啟一個轉發端口給跳板機遠程Redis服務使用。

兩種思路:

1、通過SSHTunnelForwarder,paramiko模塊,先ssh到跳板機,然后在跳板機上(或者內部服務器上),獲取到權限,然后遠程Redis。

2、使用SSHTunnelForwarder模塊,通過本地22端口ssh到跳板機,然后本地開啟一個轉發端口給跳板機遠程Redis服務使用。

思路一:

private_key_path = '/Users/xxx/.ssh/id_rsa'rsaKey = paramiko.RSAKey.from_private_key_file(private_key_path)ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(跳板機或者內網服務器IP或者域名, 22, username, rsaKey)stdin, stdout, stderr = ssh.exec_command('redis-cli -h {} -p {} -n {} {}'.format(host, port, db, script))result = stdout.read(), stderr.read()for out in result: # 需要通過循環拿到stdout,否則為空值  if out:    return out

類似:

import paramikofrom sshtunnel import SSHTunnelForwarderwith SSHTunnelForwarder(  (REMOTE_SERVER_IP, 443),  ssh_username="",  ssh_pkey="/var/ssh/rsa_key",  ssh_private_key_password="secret",  remote_bind_address=(PRIVATE_SERVER_IP, 22),  local_bind_address=('0.0.0.0', 10022)) as tunnel:  client = paramiko.SSHClient()  client.load_system_host_keys()  client.set_missing_host_key_policy(paramiko.AutoAddPolicy())  client.connect('127.0.0.1', 10022)  # do some operations with client session  client.close()print('FINISH!')

方法二:

# 使用SSHTunnelForwarder隧道,通過跳板機鏈接Rediswith SSHTunnelForwarder(    ('xxx.xxx.xx.xx', 22), # 跳板機    ssh_username=username,    ssh_pkey="/Users/xxx/.ssh/id_rsa",    remote_bind_address=('xx.xx.xx.xxx', 6379), # 遠程的Redis服務器    local_bind_address=('0.0.0.0', 10022) # 開啟本地轉發端口) as server:  server.start() # 開啟隧道  print(server.local_bind_port)  # 本地通過local_bind_port端口轉發,利用跳板機,鏈接Redis服務  cls.red = redis.Redis(host='127.0.0.1', port=server.local_bind_port, db=db, decode_responses=True)  server.close() # 關閉隧道

Advice:

一般跳板機是個干凈的機器,公司內網服務器大部分不會給權限或者有redis-client客戶端,因此推薦使用方法2。

SSHTunnelForwarder使用:https://pypi.python.org/pypi/sshtunnel/

以上這篇python 通過SSHTunnelForwarder隧道連接redis的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张家界市| 武胜县| 郎溪县| 郧西县| 罗山县| 沙洋县| 明水县| 讷河市| 巢湖市| 云林县| 瓦房店市| 宝坻区| 宽甸| 开封县| 剑河县| 丁青县| 龙门县| 怀宁县| 昌邑市| 镇坪县| 始兴县| 金湖县| 河间市| 奉新县| 霸州市| 卫辉市| 始兴县| 漳浦县| 萨嘎县| 永德县| 大田县| 绥芬河市| 阜新| 宁夏| 安泽县| 顺义区| 松阳县| 普洱| 灌阳县| 两当县| 夹江县|