我有两台机器:机器 foo ( 10.0.0.1
) 正在运行 redis 服务器,机器 bar ( 192.168.0.1
) 正在运行通过 jedis 连接到 foo 的 java 应用程序。当给 jedis 地址 10.0.0.1
时一切正常.
但我不信任 foo 和 bar 之间的路由器,并且 redis 不支持 ssl。所以我设置了一条从 bar 到 foo 的 ssh 隧道:user@bar$ ssh -N -f -L localhost:6379:localhost:6379 user@foo
现在,我可以从 bar 直接通过 10.0.0.1
成功 telnet 到 foo 上的 redis或通过隧道127.0.0.1
。对于jedis,如果我使用127.0.0.1
我得到异常 java.net.ConnectException: Connection refused
,但是jedis可以成功连接到10.0.0.1
就好了。
如何说服 jedis 使用 ssh 隧道?
最佳答案
使用 jedis 的 java 应用程序是一个集群应用程序,我对应用程序的哪一部分正在启动 jedis 感到困惑。一旦我在主主机而不是从机上启动 ssh 隧道,一切都会按预期工作。
关于java - 无法通过 ssh 隧道通过 Jedis 连接到 redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15076096/