簡體   English   中英

例如,使用 SSH 隧道從本地開發機器連接到雲數據庫

[英]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,但我不確定它在這個等式中扮演什么角色
  • 我不知道端口是怎么回事(1433 是數據庫端口,但 SSH 超過 22)
  • 我假設這樣做會創建某種類型的端口轉發,將所有進出端口 1433 的本地流量轉發到端口 22,這可能是我們能夠連接到 127.0.0.1 的雲數據庫的方式,但是......這里的往返交通情況如何? 本地/1443 -> SSH/22 -> 雲/1433? 我不明白

如果有人能花時間參加ELI5並幫助我了解這里發生的事情以及它是如何工作的,我將不勝感激!

我會盡量回答您在這里列出的問題,我強烈建議您閱讀@jarmod 在評論中建議的SSH 隧道解釋帖子以獲得更透徹的理解。

ec2-some-ip.compute-1.amazonaws.com機器似乎是某種類型的堡壘或 jumpbox,但我不確定它在這個等式中扮演什么角色

是的,這台機器的用途就是把流量轉發到雲DB。 這台機器不可能是 inte.net 上的隨機機器。 這台機器是專門選擇的,必須滿足以下標准:

  1. 它安裝了 SSH 服務器。
  2. 它可以通過您的本地開發機器訪問。
  3. 它可以連接到雲數據庫。

條件 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 個端口。

  1. 本地開發機器上的端口 1433
  2. 堡壘主機( ec2-some-ip.compute-1.amazonaws.com機器)上的端口 22
  3. 雲DB機器上的1433端口

我將使用符號LOCAL:1433 、 BASTION BASTION:22CLOUDDB: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM