windows上Redis Desktop Manager链接服务器docker内Redis方法
先判断 Redis 在容器里监听的是 127.0.0.1 还是 0.0.0.0:
redis-cli -a 123321 ping # 确认能 PONG
redis-cli -a 123321 CONFIG GET bind
redis-cli -a 123321 CONFIG GET port
输出里能看到:
1) "bind"
2) "0.0.0.0"
1) "port"
2) "6379"
这样就说明 Redis 已经对外监听 0.0.0.0:6379 了。
如果不是的话可以按照下面的方法设置:
https://blog.csdn.net/laosao_66/article/details/151763787?spm=1011.2124.3001.6209
在 FinalShell 里配置本地端口转发
-
打开你在 FinalShell 里已经建好的 SSH 连接(就是
wch
,主机=10.199.194.166,端口=6122)。 -
右键 → 编辑。
-
找到 端口转发 / 隧道 选项卡(FinalShell 是支持的)。
-
新建一条规则:
-
类型:本地转发 (Local)
-
本地监听端口:比如
16379
(自己随便定一个未占用的端口) -
目标主机:
127.0.0.1
(因为 Redis 在容器里监听了所有网卡,写 127.0.0.1 即可) -
目标端口:
6379
-
-
保存 → 断开 SSH → 重新连接一次,让转发规则生效。
这样做的效果是:你的 Windows 电脑本地的
127.0.0.1:16379
会被 FinalShell 通过 SSH 隧道转发到容器里的127.0.0.1:6379
。
在 Windows Redis 客户端里连接
打开你的 Redis GUI 软件(比如 RDM),在「新建连接」里填:
-
地址 (Host):
127.0.0.1
-
端口 (Port):
16379
(就是你刚刚设置的本地监听端口) -
密码 (Password):
123321
-
用户名留空
-
不需要勾选 SSH(因为 SSH 隧道已经在 FinalShell 里开好了)
点 确定,测试应该能连上 → PONG。
别的验证方法(命令行)
在 Windows PowerShell/CMD 下试:
redis-cli -h 127.0.0.1 -p 16379 -a 123321 ping
如果返回 PONG
,说明隧道配置成功。
数据流向图:
* 这里的 “127.0.0.1:6379” 是 相对于 SSH 服务器所在那一端 的回环地址。你的 SSH 登录就是进到这个容器里,因此 目标地址写 127.0.0.1:6379 完全正确(等价于“容器内连容器内的 Redis”)。
如果将来 SSH 登到的是宿主机而不是容器,那目标地址就要写“容器 IP:6379(172.17.x.x)”。
原理:
-
本地监听:FinalShell 按你的规则在 Windows 上监听
127.0.0.1:16379
。 -
建立通道:当你的 GUI/redis-cli 连接到
127.0.0.1:16379
,FinalShell 把这条 TCP 连接“接起来”,并在已建立的 SSH 会话里开一个 direct-tcpip 通道,告诉远端 sshd:“请你在远端替我连一下
127.0.0.1:6379
。” -
远端代连:远端 sshd(在你的容器里) 去连接
127.0.0.1:6379
—— 这就是容器内部的 Redis。 -
双向转发:之后两端的字节流全都通过这条 SSH 隧道中转(是加密的),所以 Windows 上的客户端感觉就像直连上了 Redis。
-
会话生命周期:只要 SSH 会话不断开,本地
16379
就一直可用;SSH 一断,隧道就失效,客户端会连不上。
对比:
本地转发(-L):把“本地端口 → 远端目标”打通(你现在用的)。
远端转发(-R):把“远端端口 → 本地目标”打通(用得少)。
动态转发(-D):开一个 SOCKS 代理,像翻墙那样用。