赞
踩
当使用 RSA 私钥进行 SSH 认证时,你可以通过 paramiko
的 RSAKey
来加载私钥,并用其创建 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
是你的私钥文件的正确路径。paramiko.RSAKey.from_private_key_file
函数的 password
参数来实现。SSH_HOST
, SSH_USERNAME
, REDIS_HOST
, REDIS_PORT
, 和 REDIS_PASSWORD
等变量的值为实际的值。使用 RSA 私钥进行 SSH 连接是一种更安全的认证方式,特别是在生产环境中。确保妥善保管你的私钥,并定期更新以维持系统的安全性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。