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

当使用 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()

        # 连接到 Redis
        redis_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 连接是一种更安全的认证方式,特别是在生产环境中。确保妥善保管你的私钥,并定期更新以维持系统的安全性。

相关推荐

  1. python通过ssh形式redis服务器

    2023-12-07 01:12:03       40 阅读
  2. Linux服务器设置 SSH 通过登录(免登录)

    2023-12-07 01:12:03       26 阅读
  3. 设置 SSH 通过登录

    2023-12-07 01:12:03       35 阅读
  4. Linux 服务器使用 ssh 登录

    2023-12-07 01:12:03       39 阅读
  5. 服务器配置 ssh 登录

    2023-12-07 01:12:03       36 阅读
  6. Git | SSH 连接 GitHub

    2023-12-07 01:12:03       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 01:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 01:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 01:12:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 01:12:03       20 阅读

热门阅读

  1. 鸿蒙学习资料

    2023-12-07 01:12:03       47 阅读
  2. Android跨进程通信,RPC,IPC

    2023-12-07 01:12:03       30 阅读
  3. EOS的eosjs的演进

    2023-12-07 01:12:03       43 阅读
  4. 谨慎使用android.view.SurfaceView.setVisibility方法

    2023-12-07 01:12:03       41 阅读
  5. localForage使用 IndexedDB / WebSQL存储

    2023-12-07 01:12:03       37 阅读
  6. 【MySQL工具】my2sql-快速解析binlog

    2023-12-07 01:12:03       29 阅读
  7. MySQL Binlog Digger 4.31

    2023-12-07 01:12:03       42 阅读
  8. C++线段求交:计算两条线段的交点

    2023-12-07 01:12:03       33 阅读
  9. 【C/C++指针】指针*与引用&的区别

    2023-12-07 01:12:03       42 阅读
  10. 【微服务】分布式限流如何实现

    2023-12-07 01:12:03       42 阅读
  11. Windows 安装 flash-attention 和 bitsandbytes

    2023-12-07 01:12:03       38 阅读