【问题标题】:SSH local port forwarding on a remote not listening port: the connection succeeds?远程未侦听端口上的 SSH 本地端口转发:连接成功?
【发布时间】:2014-04-28 15:35:14
【问题描述】:

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

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

经过一番反思,我得出结论,从纯网络的角度来看,这是我应该预料到的行为:SSH客户端实际上是在localhost:X上监听,所以连接是可能的。

尽管如此,这会导致一个问题的情况,即我有一个明显连接的套接字,它与任何人都没有对话。即使在套接字上发送数据也是一个成功的操作。

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

如果不是,您将如何着手检测情况?回答超时?

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

【问题讨论】:

    标签: ssh portforwarding


    【解决方案1】:

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

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

    所以实际上除了挂起的客户端连接之外,没有其他合乎逻辑的选择。

    【讨论】:

      猜你喜欢
      • 2017-04-27
      • 2015-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 2014-07-09
      • 2014-11-19
      • 2011-02-26
      • 2016-10-23
      相关资源
      最近更新 更多