使用Google Gcloud通过SSH隧道进入Linux机器内部网络



我有一台Ubuntu 16.04 VirtualBox机器(即机器A(运行在连接到大学校园网络的OSX上。我想偶尔从笔记本电脑上快速进入机器以远程协助我的同事,我考虑了不同的选择。

似乎其中一个选项是"反向 ssh"(与"端口转发"或"ssh 隧道"有关(。我的笔记本电脑没有固定IP,所以我不能直接反向ssh。可能的解决方案是使用代理计算机。这个想法是,当我需要帮助我的同事时,他们将输入来自机器 A 的连接指令,这将创建一个正在运行的 GCP 实例,然后我将能够使用此桥接(代理?基仕伯机器。


/ Academic intranet
+----------+     |  
|   GCE    |     |  +----------+
| instance |<----|--| Machine A|
+----------+     |  +----------+
|  
 

/ Academic intranet
+----------+     |  
+-------------+    ssh    |   GCE    | ssh |  +----------+
| Laptop dynIP|---------->| instance |-----|->| Machine A|
+-------------+           +----------+     |  +----------+
|

我们有一个谷歌云帐户,gcloud安装在机器A上。据我所知,GCP 已经有一种非常简单的方法在 GCP 中设置隧道:

https://cloud.google.com/community/tutorials/ssh-tunnel-on-gce

我试过了,它有效。这让我猜测,在最后一步,GCP 上也应该有同样的可能性:让我能够在正在运行的 GCP 实例上打开一个 SSH 浏览器窗口,以便我可以从那里 ssh 进入机器 A。

有什么想法吗?

编辑:

以下是我按照 gce 指令遵循 ssh 隧道的距离:

在机器 A 上:

gcloud compute instances create --zone us-west1-a tunnel
gcloud compute ssh --zone us-west1-a tunnel -- -N -p 22 -D localhost:2210

在我的笔记本电脑上,我可以打开 https://console.cloud.google.com/compute/instances,然后打开浏览器窗口进行 SSH 连接。

从 GCP 实例主机名tunnel,我想我错过了以下内容:

ssh-into-machine-A-from-here

这是我缺少的最后一个命令。或者,也许gcloud中的 ssh 隧道需要额外的标志/参数。

0( 使用如下命令在 GCP 上创建一个实例:

gcloud compute instances create --zone us-west1-a tunnel

0b( 单击 https://console.cloud.google.com/compute/instances 上的"SSH"链接以打开浏览器窗口。

0c( 在浏览器窗口中,编辑sshd_config文件以启用GatewayPorts yes

0d( 设置 gcloud CLI 并首次连接,如下所示:

gcloud compute ssh --zone us-west1-a tunnel

这将在$HOME/.ssh/google_compute_engine中创建 ssh 密钥。断开与它的连接。创建密钥后,请按照以下步骤操作。

1( 要建立从GCE到机器A的转发:在机器A上运行以下命令:

ssh -i ~/.ssh/google_compute_engine -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no -f -N -R 2022:*:22 gce_user@gce_address

2( 现在,要从笔记本电脑连接到计算机 A,您可以将浏览器窗口与 GCP 实例一起使用并执行以下操作:

ssh -p 2022 A_machine_user@localhost

然后,这应该要求在A_machine_user上输入密码并将您连接到计算机 A。

我不是 100% 确定我得到了你的确切问题,但据我所知,创建 VPN 应该是最适合您的解决方案。将 GCE 实例与计算机 A 连接的最佳和最安全的方式。

您可以在此处找到有关相同类型实现的讨论。

另一种具有相同精神的选择是使用虚拟专用服务器,例如机器A上的OpenSSH。这里有一个关于如何使用OpenSSH等虚拟专用服务器实现它以及如何配置它的指南。

最新更新