远程非监听端口上的SSH本地端口转发:连接成功了吗?

时间:2014-03-21 10:14:44

标签: ssh portforwarding

我今天发现,如果我将本地端口X转发到ssh服务器端口Y,并且没有进程正在侦听端口Y,我仍然可以连接到本地端口X(我不会得到通常的& #34;连接被拒绝"错误)。

我在连接到Linux服务器的Windows主机上使用2个不同的SSH客户端进行了测试。

经过一番反思后,我得出的结论是,从纯粹的网络角度来看,这是我应该期待的行为:SSH客户端实际上正在侦听localhost:X,因此可以进行连接。

然而,这导致了一个问题,我有一个明显连接的套接字,与任何人交谈。即使在套接字上发送数据也是一次成功的操作。

所以我的问题是:SSH协议是否以某种方式管理这种情况,即我是否有检测这种情况的策略?如果是的话,我希望在某些SSH客户端和API上支持此功能(今天我使用ssh.net,似乎没有提供此功能)。

如果没有,您将如何进行检测?超时回答?

感谢您的帮助, 阿尔贝托。

1 个答案:

答案 0 :(得分:0)

如果服务器无法连接到远程端,唯一的逻辑行为是关闭客户端连接,但这不会比挂起连接好多少。

此外,当SSH服务器在放弃之前等待远程连接一两分钟时,可能会出现这种情况,因此无论如何客户端的连接将在这段时间内打开。

所以实际上没有逻辑替代方案而不是挂起的客户端连接。