[英]How to make ssh tunneling from google compute engine to database server, and try to connect from google cloud run
[英]Using SSH tunneling to connect to cloud DBs from a local dev machine, by example
我試圖更好地理解 SSH 隧道,因為它們用於在開發人員的本地計算機和在雲中運行的數據庫(AWS、GCP 等)之間中繼通信。
我已經看到很多例子,你在做類似的事情:
ssh -NL 1433:some-db.us-east-1.rds.amazonaws.com:1433 \
ubuntu@ec2-some-ip.compute-1.amazonaws.com -i ~/myapp.pem
然后在本地連接到我的some-db
指定主機127.0.0.1
。
我假設這是為了連接到位於 VPC 內的雲數據庫(RDS 等),但我想真正了解這里發生了什么。 例如:
ec2-some-ip.compute-1.amazonaws.com
機器似乎是某種類型的堡壘或 jumpbox,但我不確定它在這個等式中扮演什么角色如果有人能花時間參加ELI5並幫助我了解這里發生的事情以及它是如何工作的,我將不勝感激!
我會盡量回答您在這里列出的問題,我強烈建議您閱讀@jarmod 在評論中建議的SSH 隧道解釋帖子以獲得更透徹的理解。
ec2-some-ip.compute-1.amazonaws.com
機器似乎是某種類型的堡壘或 jumpbox,但我不確定它在這個等式中扮演什么角色
是的,這台機器的用途就是把流量轉發到雲DB。 這台機器不可能是 inte.net 上的隨機機器。 這台機器是專門選擇的,必須滿足以下標准:
條件 1 確保您的本地開發機器可以使用 SSH 協議與堡壘主機( ec2-some-ip.compute-1.amazonaws.com
機器)通信。 條件 2 確保您的本地開發機器可以 SSH 到堡壘主機( ec2-some-ip.compute-1.amazonaws.com
機器),並且當您連接到127.0.0.1:1433
時,流量可以轉發到端口堡壘主機的 22 ( ec2-some-ip.compute-1.amazonaws.com:22
)。 條件 3 確保流量可以到達其最終目的地,即雲數據庫。
我不知道端口是怎么回事(1433 是數據庫端口,但 SSH 超過 22)
為了了解流量,您需要了解此過程中涉及的 3 個端口。
ec2-some-ip.compute-1.amazonaws.com
機器)上的端口 22我將使用符號LOCAL:1433
、 BASTION BASTION:22
和CLOUDDB:1433
分別表示 1、2 和 3。
...這里的往返交通情況如何? ...
Forward pass: Local DB client (任意端口) --connects to--> LOCAL:1433
--SSH加密轉發流量--> BASTION BASTION:22
--SSH解密轉發流量--> CLOUDDB:1433
Backward pass: CLOUDDB:1433
-> BASTION BASTION:22
--SSH加密轉發流量到--> LOCAL:1433
--SSH解密轉發流量--> Local DB client(任意端口)
注意:這絕不是 SSH 轉發過程中使用的端口的詳盡列表。 使用了中間端口,但未在上圖中說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.