当 Web 服务器 (nginx) 在这些端口上运行时,在端口 80 或 443 上使用 SSH

当 Web 服务器 (nginx) 在这些端口上运行时,在端口 80 或 443 上使用 SSH

我有一台远程 Linux (Debian) 机器,我想从一个非常受限的网络访问它。事实上,仅有的两个开放端口是端口 80(用于 HTTP)和 443(HTTPS)。

在这台机器上,我有 nginx 服务器,它在端口 80 和 443 上运行。

我以前没有做过类似的事情,并且对除 nginx 之外的任何服务器软件都相当缺乏经验(还有 Minecraft,这并不是特别难做)。

如果有一个简单的方法可以实现这一点,请告诉我。

本机上的ssh服务器是这样的:OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013

答案1

sslh。它可以根据客户端请求的类型来复用连接。因此,如果 Web 浏览器出现,它会将其转发到 nginx,如果 ssh 客户端尝试连接,则会将其转发到 sshd。这自述文件.md将为您提供有关如何配置它的详细解释。

答案2

restricted_net=1.2.3.0/24
iptables -t nat -A PREROUTING -s "$restricted_net" -p tcp --dport 80 \
  -j REDIRECT --to-ports 22

撤消

iptables -t nat -L -nv --line-numbers

显示添加的规则的数量。如果它是该链中的第一条规则,则可以使用以下命令将其删除

iptables -t nat -D PREROUTING 1

也可以直接删除:

iptables -t nat -D PREROUTING -s "$restricted_net" -p tcp --dport 80 \
  -j REDIRECT --to-ports 22

相关内容