隧道cassandra通过SSH给我一个连接closures错误

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

ssh -f -N -L9161:192.XXX.XXX.200:9160 [email protected] -P 9922 

其中XXX是内部数据库networking,YYY是ssh正在侦听的networking。 当我尝试cqlsh localhost 9161我得到follwingexception:

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

但是当我telnet本地主机9161我成功了一个telnetshell。 当然cassandra正在运行。

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

    我遇到了同样的问题,最终看起来像cqlsh 5.0.1(与Cassandra 2.1.4,从他们的官方APT仓库安装)和我们旧的Cassandra 2.0.14节点(DataStax附带)之间不兼容。

    临时降级到与datastax捆绑在一起的cqlsh 4.1解决了这个问题。

    您需要代理端口9160(Cassandra客户端端口)和端口9042(CQL本地端口)。 要么运行两个terminal,要么使ssh客户端使用这些标志去背景:

     ssh -f -N -q -L 9042:192.XXX.XXX.200:9042 [email protected] -P 9922 ssh -f -N -q -L 9160:192.XXX.XXX.200:9160 [email protected] -P 9922 

    现在你应该可以在localhost的默认端口上连接cqlsh。 本地主机也是默认主机。

     cqlsh -u [username] -p [password]