当使用 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
是你的私钥文件的正确路径。 - 私钥文件需要有适当的权限设置(通常是 600),以防止未授权访问。
- 如果你的私钥是加密的(即创建时设置了密码),你还需要提供一个密码来加载它。可以使用
paramiko.RSAKey.from_private_key_file
函数的password
参数来实现。 - 像之前一样,确保替换
SSH_HOST
,SSH_USERNAME
,REDIS_HOST
,REDIS_PORT
, 和REDIS_PASSWORD
等变量的值为实际的值。
使用 RSA 私钥进行 SSH 连接是一种更安全的认证方式,特别是在生产环境中。确保妥善保管你的私钥,并定期更新以维持系统的安全性。
原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/134690926
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_32238.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。