使用 google gcloud 通过 ssh 隧道进入网络内的 linux 机器

using google gcloud to ssh tunnel into linux machine inside network

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

似乎选项之一是"reverse ssh"(与"port forwarding"或"ssh tunnelling"相关)。我的笔记本电脑没有固定 IP,所以我不能直接反向 ssh。可能的解决方案是使用代理机器。这个想法是,当我需要帮助我的同事时,他们将输入来自机器 A 的连接指令,这将创建一个 运行 GCP 实例,然后我将能够从外部使用连接到机器 A这个桥接(代理?)GCP 机器。


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



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

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

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

我试过了,很管用。这让我猜测最后一步在 GCP 上也应该是可能的:让我能够在 运行 GCP 实例上打开 SSH 浏览器 window,这样我就可以通过 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,然后打开浏览器 window 进行 SSH 连接。

从 GCP 实例主机名 tunnel,我想我遗漏了类似的东西:

ssh-into-machine-A-from-here

这是我遗漏的最后一条命令。或者 gcloud 中的 ssh 隧道可能需要额外的 flags/parameters.

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

您可以找到 here 对同类实现的讨论。

另一种选择,也就是像 OpenSSH on Machine A. Here 这样的虚拟专用服务器,有一个关于如何使用像 OpenSSH 这样的虚拟专用服务器来实现它以及如何配置它的指南。

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

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

0b) 单击 https://console.cloud.google.com/compute/instances 上的 'SSH' link 打开浏览器 window。

0c) 在浏览器 window 上,编辑 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,您可以将浏览器 window 与 GCP 实例一起使用并执行:

ssh -p 2022 A_machine_user@localhost

这应该会在 A_machine_user 上询问密码并将您连接到机器 A。