正确写法是ssh -f -N -L 6380:127.0.0.1:6379 user@redis-server-ip -p 22,其中-L指定本地6380端口转发至远程Redis的127.0.0.1:6379,-f-N使隧道后台运行,需确保Redis绑定127.0.0.1且SSH可达。
直接用 SSH 本地端口转发,就能把远程 Redis 的 6379 端口安全地“拉”到你本地,整个过程加密、无需改 Redis 配置,也不暴露服务到公网。
本地端口转发的核心命令
在你自己的电脑(客户端)上执行这条命令:
ssh -f -N -L 6380:127.0.0.1:6379 user@redis-server-ip -p 22
说明:
-L 6380:127.0.0.1:6379
:表示监听本地 6380 端口,所有发往它的请求,都会经 SSH 加密后,转给 redis-server 上的
本机
6379 端口(即 Redis 实际监听地址)
-f -N
:让 SSH 后台运行,只建隧道不启 shell,适合长期保持连接
如果 Redis 只绑定了
(常见默认),这个写法才有效;若它监听的是
,也可写成
确保 Redis 服务可被隧道访问
Redis 本身不需要开放外网,但需满足两个前提:
SSH 登录用户在 Redis 服务器上有权限,并且能访问本地 Redis 进程(比如同属一个用户,或 Redis 配置了
+
时,本地 socket 或 TCP 均可)
Redis 未启用 requirepass 以外的强认证(如 ACL),否则客户端连接时需显式提供密码
防火墙允许该用户通过 22 端口建立 SSH 连接(这是唯一需要放行的端口)
连接并验证隧道是否生效
隧道启动后,用任意 Redis 客户端连本地 6380 即可:
Redis 8.2.3
Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。
下载
redis-cli -h 127.0.0.1 -p 6380 -a your_password
或者 Python 示例:
import redisconn = redis.Redis(host='127.0.0.1', port=6380, password='your_password', decode_responses=True)conn.set('test', 'ok')print(conn.get('test'))
若返回
,说明数据已通过加密隧道平滑传输。
进阶建议:提升稳定性与安全性
生产环境推荐加几个参数:
-C
:启用压缩,小包传输更高效
-g
:允许其他设备(如局域网内另一台机器)访问本地转发端口(默认只限 127.0.0.1)
配合 autossh
:自动重连断开的隧道,避免手动维护
使用密钥登录
:禁用密码认证,提升 SSH 层安全性
127.0.0.10.0.0.0redis-server-ip:6379bind 127.0.0.1protected-mode yesok