使用谷歌 gcloud ssh 隧道进入网络内部的 linux 机器

719*_*016 8 ssh remote-desktop google-cloud-platform

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

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


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



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

Run Code Online (Sandbox Code Playgroud)

我们有一个 Google 云帐户并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
Run Code Online (Sandbox Code Playgroud)

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

从 GCP 实例 hostname tunnel,我想我错过了类似的东西:

ssh-into-machine-A-from-here
Run Code Online (Sandbox Code Playgroud)

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

Kon*_*sov 9

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

gcloud compute instances create --zone us-west1-a tunnel
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

2) 现在,要从您的笔记本电脑连接到机器 A,您可以使用带有 GCP 实例的浏览器窗口并执行以下操作:

ssh -p 2022 A_machine_user@localhost
Run Code Online (Sandbox Code Playgroud)

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