python通过ssh密钥等形式链接到redis服务器

news/2024/2/29 3:22:37

当使用 RSA 私钥进行 SSH 认证时,你可以通过 paramikoRSAKey 来加载私钥,并用其创建 SSH 隧道。以下是修改后的代码示例,使用 RSA 私钥进行 SSH 连接:

示例代码

import paramiko
from paramiko import RSAKey
from sshtunnel import SSHTunnelForwarder
import redis
import logging# 设置日志记录
logging.basicConfig(level=logging.DEBUG)# SSH 跳板机参数
SSH_HOST = 'XXXXX'
SSH_PORT = 46379
SSH_USERNAME = 'test_ai'
SSH_PRIVATE_KEY_PATH = '/home/sunyuhua/桌面/id_rsa'# Redis 服务器参数
REDIS_HOST = '172.16.0.187'
REDIS_PORT = 6379
REDIS_PASSWORD = 'Shgbit@2023'# 尝试使用不同的本地端口
LOCAL_PORT = 9091  # 更改为不同的端口# 加载私钥
my_rsa_key = paramiko.RSAKey.from_private_key_file(SSH_PRIVATE_KEY_PATH)try:# 设置 SSH 隧道with SSHTunnelForwarder((SSH_HOST, SSH_PORT),ssh_username=SSH_USERNAME,ssh_pkey=my_rsa_key,remote_bind_address=(REDIS_HOST, REDIS_PORT),local_bind_address=('127.0.0.1', LOCAL_PORT)) as tunnel:# 等待 SSH 隧道建立tunnel.start()# 连接到 Redisredis_client = redis.StrictRedis(host='127.0.0.1', port=tunnel.local_bind_port, password=REDIS_PASSWORD, decode_responses=True)# 测试 Redis 命令print(redis_client.ping())# 等待使用# 这里可以添加你的 Redis 交互代码# 关闭隧道tunnel.stop()except Exception as e:print(f"发生错误: {e}")

注意事项

  • 确保 SSH_PRIVATE_KEY_PATH 是你的私钥文件的正确路径。
  • 私钥文件需要有适当的权限设置(通常是 600),以防止未授权访问。
  • 如果你的私钥是加密的(即创建时设置了密码),你还需要提供一个密码来加载它。可以使用 paramiko.RSAKey.from_private_key_file 函数的 password 参数来实现。
  • 像之前一样,确保替换 SSH_HOST, SSH_USERNAME, REDIS_HOST, REDIS_PORT, 和 REDIS_PASSWORD 等变量的值为实际的值。

使用 RSA 私钥进行 SSH 连接是一种更安全的认证方式,特别是在生产环境中。确保妥善保管你的私钥,并定期更新以维持系统的安全性。


https://www.xjx100.cn/news/3119052.html

相关文章

Fortinet 发布《2024 年网络威胁趋势预测报告》 攻击精准性、复杂性将显著提升

近日,全球网络安全领导者Fortinet(Nasdaq:FTNT)发布《2024 年网络威胁趋势预测报告》。该报告由Fortinet全球威胁情报和研究团队(FortiGuard Labs)制作,深入探讨了高级持续性网络犯罪的新时代&a…

Android Audio实战——音频属性设置(二十一)

在 Android 中,使用音频属性(AudioAttributes)可以控制音频的行为。AudioAttributes 已经定义了一些常见的属性,比如音频用途、音频内容类型、音频标志等。 一、音频属性简介 1、常见属性 音量(volume):使用 setParameters("volume=5") 将音量设置为 5(范围…

CSS核心功能手册:从熟悉到精通

CSS核心功能代码 文章目录 CSS核心功能代码[toc]参考HTML代码尺寸操作设置元素尺寸内边距外边距设置默认布局边距用途和使用场景: 背景设置**背景颜色 (background-color)**:**背景图像 (background-image)**:**背景重复 (background-repeat)**:**背景位置 (backgro…

Structured Streaming: Apache Spark的流处理引擎

欢迎来到我们的技术博客!今天,我们要探讨的主题是Apache Spark的一个核心组件——Structured Streaming。作为一个可扩展且容错的流处理引擎,Structured Streaming使得处理实时数据流变得更加高效和简便。 什么是Structured Streaming&#…

Apache Flink(二):数据架构演变

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹…

MySQL主从复制架构

MySQL主从复制架构 一、MySQL集群概述 ##1、集群的主要类型 高可用集群(High Available Cluster,HA Cluster) 高可用集群是指通过特殊的软件把独立的服务器连接起来,组成一个能够提供故障切换(Fail Over&#xff09…

如何让电脑每天定时自动关机?

如何让电脑每天定时自动关机?电脑已经成为社会生产活动中不可或缺的一种工具,它对于我们每个人都非常的重要,不管是工作、生活还是学习中,我们都需要利用电脑。不过很多小伙伴因为繁忙或者因为其它的事情,导致电脑经常…

maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号

maven的package和install命令有什么区别以及Maven常用命令与GAV坐标与Maven依赖范围与Maven依赖传递与依赖排除与统一声明版本号 一: maven的package和install命令有什么区别 一般都与clean命令结合使用 mvn package 生成target目录,编译、测试代码,…