我在 Microsoft Azure 上有一台 Linux 服务器。这是一个 Ubuntu 14 服务器。显然,我在 UFW(防火墙)配置上做错了,现在我根本无法 ssh 进入机器。我需要禁用防火墙才能重新进入机器。我假设我现在唯一的选择是尝试通过 PowerShell 来完成,因为 Azure 不提供任何 KVM 访问。
这可能吗?如何通过 PowerShell 执行 shell 命令?
我在 Microsoft Azure 上有一台 Linux 服务器。这是一个 Ubuntu 14 服务器。显然,我在 UFW(防火墙)配置上做错了,现在我根本无法 ssh 进入机器。我需要禁用防火墙才能重新进入机器。我假设我现在唯一的选择是尝试通过 PowerShell 来完成,因为 Azure 不提供任何 KVM 访问。
这可能吗?如何通过 PowerShell 执行 shell 命令?
无法从 VM 本身外部在 Azure VM 上运行命令;也没有 VM 控制台访问。不幸的是,这在 Azure 中是一个很大的限制。
如果您不小心将自己锁定在 VM 之外,恢复它的唯一方法是下载其虚拟磁盘并在本地 Hyper-V 服务器上运行它,您可以获得控制台访问权限并修复任何错误;或者,如果可以脱机解决问题(通过编辑配置文件),您可以将磁盘附加到另一个 Azure VM 并从那里进行处理。
如果您安装了自定义脚本扩展,您可以使用它来禁用或配置您的防火墙。
编辑@massimo 已经回答了这个问题(我没有意识到他涵盖了附加磁盘解决方案)。但是,由于我已经输入了这个,我会在这里留下答案,因为它包含有关从锁定的 VM 附加磁盘的更多细节......
如果您被锁定,要访问您的 VM 磁盘,您可以删除虚拟机(但不能删除磁盘/vhd 或任何附加的磁盘),这会破坏保存 vhd 的页面 blob 的租约。然后,您应该能够将 vhd 作为附加磁盘附加到正在运行的 Linux VM。此时,您应该能够访问磁盘上的文件。
我对防火墙配置一无所知,如果您能够以这种方式对其进行更改,但至少您将拥有文件级访问权限。
Azure 提供了一个扩展来在许多情况下恢复对 Linux VM 的访问。正如@proteus 所提到的,与自定义脚本一起,您应该能够在不重新创建虚拟机的情况下解决此问题。