如何配置 ssh 来监听端口 22,但仅在提供某种隧道时限制使用?

如何配置 ssh 来监听端口 22,但仅在提供某种隧道时限制使用?

所以我有这个 ssh 服务器,它当前正在监听某个端口,比如说 5003(只是为了它的目的),我可以使用 unix 中的标志并正确输入端口轻松访问它。

这一切都没问题,但在我的大学里,他们阻止了几乎所有的端口,除了最常用的端口(其中一个是与 SSH 相关的 22)我仍然想让端口 33933 保持开放,但我想要一种行为,这样如果我直接连接到端口 22,它会返回某种错误,但如果我通过端口 22 添加某种隧道,但最终在本地端口 33933 上会成功

我已经尝试将 ListenAdress :22 端口设置为 5003,尽管只是将自己锁定在 ssh 之外,我还尝试了与本地隧道和远程相关的各种配置,但它们似乎不起作用,即使我在家里这样做,也没有任何限制(我激活了 TCPtunneling)

我之所以要使用默认端口以外的端口,是因为虽然我已将其设置为使用 RSA 身份验证,但我想混淆该端口,以便在发生故意攻击时使其更加困难(可以合理地假设 SSH 几乎总是在默认端口中)

这是合理的担心还是我在搬起石头砸自己的脚?是否可以以某种方式监听端口 22,但仅在客户端执行某种重定向时才接受“请求”?

答案1

欢迎来到 Serverfault!

使用隧道通常意味着连接不是来自“任何地方”,而是来自定义的隧道出口服务器。这可能是专用服务器,或者只是localhost(例如,使用 PuTTY 时)。现在,您至少有两个选择。

第一的,您可以使用防火墙(例如iptables)将 22 端口的访问限制在提供隧道出口的机器上。

第二,您可以进入/etc/ssh/sshd_config并编辑Listen...参数,请参阅sshd 手册页。您可能在默认配置中发现以下内容:

#ListenAddress 0.0.0.0
#ListenAddress ::

相关内容