通过 ssh 隧道 cassandra 给我一个连接关闭错误

KIC*_*KIC 4 ssh-tunnel cassandra

我有一个带有两个网络接口的服务器。Cassandra 正在侦听 eth1 上的专用内部数据库网络(无法从外部访问)。所以我做我的隧道是这样的:

ssh -f -N -L9161:192.XXX.XXX.200:9160 user@192.YYY.YYY.200 -P 9922
Run Code Online (Sandbox Code Playgroud)

其中 XXX 是内部数据库网络,YYY 是 ssh 正在侦听的网络。当我尝试时,cqlsh localhost 9161出现以下异常:

Connection error: ('Unable to connect to any servers', {'localhost': ConnectionShutdown('Connection <AsyncoreConnection(139691023521360) localhost:9161 (closed)> is already closed',)})
Run Code Online (Sandbox Code Playgroud)

但是当我 telnet localhost 9161 时,我成功地获得了一个 telnet shell。当然,cassandra 正在运行。

任何想法如何让我的隧道工作?

小智 6

您需要代理端口 9160(Cassandra 客户端端口)和端口 9042(CQL 本机端口)。运行两个终端或使用这些标志使 ssh 客户端进入后台:

ssh -f -N -q -L 9042:192.XXX.XXX.200:9042 user@192.YYY.YYY.200 -P 9922
ssh -f -N -q -L 9160:192.XXX.XXX.200:9160 user@192.YYY.YYY.200 -P 9922
Run Code Online (Sandbox Code Playgroud)

现在您应该能够在本地主机的默认端口上与 cqlsh 连接。本地主机也是默认主机。

cqlsh -u [username] -p [password]
Run Code Online (Sandbox Code Playgroud)