正确写法是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 只绑定了
127.0.0.1(常见默认),这个写法才有效;若它监听的是0.0.0.0,也可写成redis-server-ip:6379
确保 Redis 服务可被隧道访问
Redis 本身不需要开放外网,但需满足两个前提:
- SSH 登录用户在 Redis 服务器上有权限,并且能访问本地 Redis 进程(比如同属一个用户,或 Redis 配置了
bind 127.0.0.1+protected-mode yes时,本地 socket 或 TCP 均可) - Redis 未启用 requirepass 以外的强认证(如 ACL),否则客户端连接时需显式提供密码
- 防火墙允许该用户通过 22 端口建立 SSH 连接(这是唯一需要放行的端口)
连接并验证隧道是否生效
隧道启动后,用任意 Redis 客户端连本地 6380 即可:
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
redis-cli -h 127.0.0.1 -p 6380 -a your_password
或者 Python 示例:
import redis
conn = redis.Redis(host='127.0.0.1', port=6380, password='your_password', decode_responses=True)
conn.set('test', 'ok')
print(conn.get('test'))
若返回 ok,说明数据已通过加密隧道平滑传输。
进阶建议:提升稳定性与安全性
生产环境推荐加几个参数:
- -C:启用压缩,小包传输更高效
- -g:允许其他设备(如局域网内另一台机器)访问本地转发端口(默认只限 127.0.0.1)
- 配合 autossh:自动重连断开的隧道,避免手动维护
- 使用密钥登录:禁用密码认证,提升 SSH 层安全性










