连接到没有外部IP的VM实例

时间:2020-07-23 11:25:57

标签: google-cloud-platform virtual-machine

我正在尝试通过cloud shellcloud SDK连接到没有外部IP地址的google cloud VM实例。

Google文档说我们可以使用IAP进行连接 通过IAP连接:引用 using IAP

a)将roles/iap.tunnelResourceAccessor角色授予要连接到 VM 的用户。

b)使用以下命令连接到 VM

gcloud compute ssh instance-name --zone zone

或 使用IAP进行TCP转发:请参考using TCP forwarding 我们还可以通过使用端口IP'35.235.240.0/20' TCP:22设置入口防火墙规则来进行连接 并选择一个IAM角色选择Cloud IAP > IAP-Secured Tunnel User

这两种不同方法之间的区别是什么,这两个独立的IAM角色有什么区别

roles/iap.tunnelResourceAccessor
IAP-secured Tunnel User

我是云的新手,所以请掌握我的基本知识。

2 个答案:

答案 0 :(得分:2)

这是完全一样的东西。看this page

IAP保护的隧道用户(roles / iap.tunnelResourceAccessor)

您具有在GUI中看到的角色的显示名称:IAP-Secured Tunnel User,并且具有在脚本和CLI中必须使用的角色roles/iap.tunnelResourceAccessor的技术名称

答案 1 :(得分:1)

问题(“ refer using IAP”)中提到的链接实际上指向 Connecting to instances that do not have external IP addresses > Connecting through a bastion host。 通过堡垒主机进行连接是除通过IAP访问之外的另一种方法。

如文档Connecting to instances that do not have external IP addresses > Connecting through IAP中所述,

IAP的TCP转发功能在HTTPS内包装了SSH连接。 然后,IAP的TCP转发功能会将其发送到远程实例。

因此,问题的两个部分(或之前或之后)都属于同一访问方法:Connect using Identity-Aware Proxy for TCP forwarding。因此,第一个问题的答案是“没有区别” ,因为所有这些都描述了IAP TCP转发的工作方式,以及设置和使用IAP TCP的步骤:

1。。创建一个防火墙规则,该规则:

  • 适用于您希望使用IAP可访问的所有VM实例;
  • 允许来自IP范围35.235.240.0/20(此范围包含IAP用于TCP转发的所有IP地址)的入口流量;
  • 允许使用IAP TCP转发连接到您要访问的所有端口,例如SSH的端口22

2。。授予使用IAP的权限:

  • 使用GCP控制台或gcloud向用户添加角色IAP-Secured Tunnel Userroles/iap.tunnelResourceAccessor)。
    注意:拥有Owner访问项目的用户始终有权使用IAP进行TCP转发。

3。。使用以下工具之一连接到目标VM:

  • GCP控制台:使用Cloud Console中的SSH按钮;
  • gcloud compute ssh INSTANCE_NAME

有一个重要的解释,说明如何调用IAP TCP转发来访问没有公共IP的VM实例。参见Identity-Aware Proxy > Doc > Using IAP for TCP forwarding

注意。如果实例没有公共IP地址,则该连接自动使用IAP TCP隧道。如果实例确实具有公共IP地址,则连接将使用公共IP地址而不是IAP TCP隧道。
您可以使用--tunnel-through-iap标志,以便gcloud compute ssh始终使用IAP TCP隧道。

guillaume blaquiere已经注意到,roles/iap.tunnelResourceAccessorIAP-secured Tunnel User不是不同的IAM角色,而是角色名称角色标题< / strong>。还有一种资源可以方便地表示这一点:
Cloud IAM > Doc > Understanding roles > Predefined roles > Cloud IAP roles