ssh 隧道奇怪现象

ssh 隧道奇怪现象

这个例子与 MongoDB 相关,但核心问题在于 SSH 隧道,不过 MongoDB 的东西应该会有所价值

你好,

我正在尝试启动一个本地 MongoDB 节点,该节点是位于数据中心的 ReplicaSet 的一部分。TCP/IP 将通过 SSH 从本地传输到数据中心。

所有机器(本地和数据中心)都运行 CentOS。

使用以下命令在数据中心 box1 上创建到本地节点的隧道时,此方法有效:

ssh -v -4 -f -N -o TCPKeepAlive=no -o ServerAliveInterval=15 -L27017:127.0.0.1:27017 -g a_user@server_i_have_ssh_access_to

box1 可以使用命令访问本地节点 Mongo shell (命令 1):

mongo --host localhost --port 27017

box2 还可以使用命令访问本地节点 Mongo shell (命令2):

mongo --host box1 --port 27017

数据中心的 box2 也可以连接到 box1:27017,即我的本地节点的转发端口。

但是,最好、更简单,并且应该可以在与上述相同的端口上在本地节点和 box1 之间设置反向转发。使用以下命令:

ssh -v -4 -f -N -o TCPKeepAlive=no -o ServerAliveInterval=15 -R27017:127.0.0.1:27017 -g a_user@box1

现在我可以使用从 box1 连接到本地节点命令 1然而,命令2失败:

Error: couldn't connect to server box1:27017} (anon):1139 exception: connect failed

有任何想法吗?

答案1

默认情况下,-R只监听环回接口(默认是-L所有接口)。因此,cmd1 可以工作,因为它在 box1 上本地运行,但 cmd2 会失败,因为它在 box2 上运行。解决方法是更改-R​​为以下之一:

-R:27017:127.0.0.1:27017
-R'*:27017:127.0.0.1:27017'

答案2

我能想到的只是 TCP Wrappers 或其他身份验证失败了。/var/log/auth.log如果它是基于 Debian 的操作系统或类似操作系统,会有什么问题吗?

相关内容