You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

示例解析:通过SSH隧道从本地开发机连接云数据库

详解SSH隧道连接云数据库(AWS RDS等)的工作原理

你贴的这条SSH命令,是用来绕过公网限制,把本地开发机和AWS VPC内的私有数据库(比如RDS)连起来的典型操作——因为大部分云数据库都会被配置成只允许VPC内部访问,不让外部直接连,这时候就需要SSH隧道+堡垒机来搭桥。

ssh -NL 1433:some-db.us-east-1.rds.amazonaws.com:1433 \
  ubuntu@ec2-some-ip.compute-1.amazonaws.com -i ~/myapp.pem

下面逐个解释你的疑问:

1. 堡垒机(ec2-some-ip.compute-1.amazonaws.com)的具体作用?

把VPC比作一个封闭的写字楼,里面的RDS数据库是写字楼里的办公室,你在写字楼外面(本地开发机),直接进不去办公室。而堡垒机就是写字楼门口的前台岗亭:

  • 岗亭有对外的门(公网IP),你能直接走到岗亭门口(用SSH连堡垒机的公网IP);
  • 岗亭在写字楼内部有通道(属于VPC网络),能直接走到办公室(堡垒机可以访问RDS的内网地址);
  • 你进了岗亭之后,就能让岗亭帮你把消息传给办公室里的数据库,再把数据库的回复带回来。

2. 端口1433和SSH默认22端口的关联逻辑?

这俩端口干的是完全不同的事,是通过SSH隧道“绑”在一起的:

  • 1433是数据库的“门牌号”:本地开发机上的数据库客户端要找数据库,得敲这个门;RDS数据库也是靠这个端口接收请求。
  • 22是SSH连接的“门牌号”:你要连堡垒机的SSH服务,得敲这个门,所有加密的隧道流量都是通过这个端口在本地和堡垒机之间传输的。

简单说,就是你把“要发给数据库1433端口的消息”,装进一个加密的SSH包裹里,这个包裹走22端口的路送到堡垒机;堡垒机拆开包裹,把里面的消息原封不动发给RDS的1433端口,再把RDS的回复同样打包成SSH包裹,走22端口送回给你。

3. 命令的端口转发逻辑和完整流量路径?

这条命令不是把本地1433转去SSH的22端口,而是创建了一条「本地监听→SSH加密通道→堡垒机转发到RDS」的端口转发链,完整的往返路径是:

请求路径(本地→数据库):

  • 本地数据库客户端连接127.0.0.1:1433;
  • 本地SSH客户端监听着1433端口,收到请求后将数据加密打包;
  • 加密数据通过SSH连接(用22端口)发送到堡垒机的SSH服务;
  • 堡垒机SSH服务解密数据,转发到目标地址some-db.us-east-1.rds.amazonaws.com:1433;
  • RDS数据库接收请求并处理。

回复路径(数据库→本地):

  • RDS把处理后的回复发送给堡垒机;
  • 堡垒机SSH服务将回复加密打包;
  • 加密回复通过已建立的SSH连接(仍用22端口)发回本地SSH客户端;
  • 本地SSH客户端解密数据,转发到本地1433端口;
  • 本地数据库客户端接收回复,完成通信。

内容的提问来源于stack exchange,提问作者hotmeatballsoup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:31:06