Google 计算 - SSH - ufw 阻止了端口 22

Ase*_*tam 4 ssh ufw google-compute-engine

好吧,我正在做一些服务器设置阅读这篇文章并运行以下命令 -

sudo apt-get install ufw
sudo ufw enable

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Run Code Online (Sandbox Code Playgroud)

这基本上关闭了所有其他端口,现在 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
Run Code Online (Sandbox Code Playgroud)

现在有什么方法可以 ssh,因为我根本无法访问机器。

小智 8

默认情况下,除了端口 22 之外的所有端口都被阻止,以允许您通过 ssh 连接到 VM 实例。您还可以选择打开端口 80 和/或 443。您可以通过检查 Cloud Console 中的防火墙规则来查看默认情况下哪些端口是打开的。我提到这一点是为了通知您,您将来不需要安装 ufw。

您必须向VM 实例提供启动脚本才能启用 SSH。您可以使用下面列出的任一命令创建一个简单的 bash 脚本。

$ufw 允许 ssh

或者

ufw 允许 22

您不必使用 sudo 前缀,因为启动脚本已经以 root 身份运行。


小智 5

只是称赞已接受的答案。

有些人会问如何在甚至无法通过 SSH 连接的虚拟机上包含启动脚本。您可以通过以下方式完成此操作:

  • 导航到虚拟机实例下的 GCP Console
  • 停止您的虚拟机实例
  • 单击编辑
  • 在自定义元数据下,添加键startup-script和值:

     #! /bin/bash
     sudo ufw allow 22
    
    Run Code Online (Sandbox Code Playgroud)

    希望这能消除一些困惑:)