嗯,我在做一些服务器设置时读到了这篇文章文章并运行以下命令 -
sudo apt-get install ufw
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
这基本上关闭了所有其他端口,现在 SSH 根本不起作用。从浏览器或从 osx 终端。
我已经通过串行登录进行连接,并且可以看到 ufw 阻止连接 -
[ 1292.322021] [UFW BLOCK] IN=eth0 OUT= MAC=... SRC=00.00.00.00 DST=10.142.0.2 LEN=60 TOS=0x00 PREC=0x00 TTL=45 ID=7906 PROTO=TCP SPT=58028 DPT=22 WINDOW=60720 RES=0x00 SYN URGP=0
由于我根本无法访问机器,现在有没有什么办法可以 ssh 呢?
答案1
默认情况下,除端口 22 之外的所有端口均被阻止,以允许您通过 ssh 连接到 VM 实例。您还可以选择打开端口 80 和/或 443。您可以通过检查云控制台中的防火墙规则来查看默认情况下哪些端口是打开的。我提到这一点是为了通知您,您将来不需要安装 ufw。
你必须提供启动脚本到 VM 实例以启用 SSH。您只需使用下面列出的任一命令创建一个简单的 bash 脚本即可。
$ufw 允许 ssh
或者
ufw 允许 22
您不必使用 sudo 前缀,因为启动脚本已经以 root 身份运行。
答案2
只是赞扬所接受的答案。
有人问如何在无法通过 SSH 进入的虚拟机上包含启动脚本。您可以通过以下方式实现此目的:
- 导航到虚拟机实例下的 GCP 控制台
- 停止您的虚拟机实例
- 单击“编辑”
在自定义元数据下,添加键
startup-script
和值:#! /bin/bash sudo ufw allow 22
希望这可以消除一些困惑:)