如果你使用第三方控制面板来管理服务器,通常会有设置防火墙规则的配置选项。如果你不小心把端口 22 的访问权限从白名单中移除,服务器就会变得无法管理。为避免这种情况,你应该事先做好以下准备。
假设你还没有被锁在服务器外,仍然可以进行 SSH 连接,以下是你可以做的事。否则,请跳到下一节。
设置具有 sudo 访问权限的用户 👨💼
第一步是创建新用户。将 newuser 替换为你偏好的用户名。
$ adduser newuser
最后,将该用户加入 sudo 组,以授予管理权限。
$ usermod -aG sudo newuser
因此,如果你不小心从防火墙白名单中移除了 SSH,你可以使用控制台连接到服务器,并以该用户登录,把 SSH 端口(22)重新加入防火墙白名单。
$ sudo ufw allow 22/tcp
大多数云服务提供商允许通过控制台访问实例。我可以独立确认,AWS EC2 和 IPServerOne Nova Cloud 能够通过控制台访问实例。
通过控制台访问意味着连接终端并不是通过端口 22 建立的。相反,它有点类似于我们使用串行线缆物理连接到服务器。
| 任何拥有服务器控制台物理/虚拟访问权限的人都可以暴力破解登录。务必设置强密码! |
你已经无法通过 SSH 登录。该怎么办?🤔
步骤如下:
- 从服务器卸载存储
- 将存储挂载到新的恢复实例
- 在防火墙配置中添加允许 SSH 的规则
- 从恢复实例卸载存储
- 将存储重新挂载回原服务器
在防火墙配置中添加允许 SSH 的规则
注意:“…” 表示存在已被截断的代码。
文件位置:/mnt/<mount>/etc/ufw/user.rules
...
### RULES ###
...
### tuple ### allow any 22 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -j ACCEPT
### END RULES ###
添加后,服务器将允许传入的 SSH 连接。


或者,你也可以先禁用简单防火墙(ufw),然后运行 ufw allow 22/tcp 命令。
不小心封锁 SSH 连接时没什么好担心的。总有办法恢复访问。😉

发表回复
要发表评论,您必须先登录。