我如何才能关闭除我自己之外所有人的 SSH 和 HTTP 服务?
背景:我们的服务器在虚拟机内运行。我在开始维护之前对虚拟机进行了快照。当出现问题时,我只需恢复快照,这样我就可以重新开始。但是,如果有人在我更新时使用服务器,那么在我恢复快照时,他/她当时的所有工作都将丢失。为了避免这种情况,我想确保在维护期间没有人可以使用服务器。
我不是虚拟机的所有者,所以我无法将其从网络上移除。我需要像其他人一样通过 VPN 登录服务器。
维护不需要 HTTP,但如果我只是停止服务,我不确定服务器是否会喜欢它。就我而言,它是一台 GitLab 服务器,通常在其服务关闭时拒绝更新,或者其更新脚本只是在迁移开始之前重新启动服务。但是,我对适用于其他基于 Ubuntu 的服务器的解决方案也很感兴趣。
答案1
我不确定您是否从 Linux 连接到虚拟机。如果您:
首先,你可以限制 SSH 连接数通过防火墙,但要小心不要把自己也锁在外面。我不认为你可以限制使用 SSH 配置文件。
其次,您可以设置 SSH 连接到隧道本地主机,这样只能从 Web 服务器进行 HTTP 访问。
使用 ~/.ssh/config 的示例隧道:
Host YourServer
HostName XXX.XXX.XXX.XXX
IdentityFile ~/.ssh/YourServerKey
User YourUser
LocalForward 8888 127.0.0.1:80
LocalForward 8889 127.0.0.1:443
通过可用的隧道,您可以向 HTTP 服务器配置文件添加限制,以仅允许本地主机查看该站点。
示例:Apache2 上的 phpMyAdmin,仅限本地主机
然后,当您再次准备公开访问时,注释掉这些行。