我有一个 vm 在 azure 上运行。我想打开那个虚拟机的一个端口。
目前我无法访问 azure 门户。但我可以通过 ssh 访问虚拟机。我拥有所有权限。是否可以向外部打开入站/出站端口?
我有一个 vm 在 azure 上运行。我想打开那个虚拟机的一个端口。
目前我无法访问 azure 门户。但我可以通过 ssh 访问虚拟机。我拥有所有权限。是否可以向外部打开入站/出站端口?
默认情况下允许出站流量。
答案(入站)实际上取决于是否创建了 NSG 并将其附加到您的 VM NIC。除非在创建过程中在门户中切换了该选项,或者它是使用没有 NSG 的 ARM 模板创建的,否则它将有一个,这是默认设置。
NSG 充当访问控制列表,无法使用本机操作系统工具对其进行管理,除非您同时 (1) 启用 VM 托管标识,并且 (2) 在 NSG 上授予托管标识修改资源的权限。执行此操作的过程非常复杂,可能不适合在这里写,因为我没有看到它的有效用例。
要在 Linux 中简单地打开一个入站端口,您可以使用:
sudo iptables -A INPUT -p tcp --dport [PORT-HERE] -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport [PORT-HERE] -m conntrack --ctstate ESTABLISHED -j ACCEPT
如果您无权访问门户来修改 NSG,则应该由其他人管理防火墙。
一般来说 - 没有。但是,如果您的 VM 具有托管标识,您可以调用托管标识端点来获取令牌并使用带有该令牌的 rest api 调用在 Azure 中执行操作,但这必须预先配置,以便您的托管标识有权执行这些操作操作。