AWS未配置安全组规则,端口转发为何仍可正常工作?
为什么没开放EC2的8888端口,SSH隧道仍能访问Jupyter?
- 你用的是SSH本地端口转发(
-L参数),流量路径是:本地笔记本的8081端口 → 已建立的SSH连接(依赖EC2的22端口,这个你肯定在安全组里开放了,否则连不上SSH)→ EC2实例内部的localhost:8888。 - AWS安全组的作用是拦截外部直接访问EC2实例的端口,比如有人从互联网直接请求EC2公网IP:8888时,安全组会生效拦截。但你的请求并非直接访问8888端口,而是通过已授权的SSH通道,把本地请求转发到EC2实例内部的localhost——这属于实例内部的进程通信,完全不受安全组的外部端口规则限制。
- 另外,默认情况下Jupyter启动后只会绑定
localhost(127.0.0.1),本来就不允许外部直接访问,仅能被实例内部的进程访问。SSH隧道相当于借助SSH的“合法通道”,把本地请求“传递”到EC2内部去访问Jupyter,所以根本不需要在安全组开放8888端口。
内容的提问来源于stack exchange,提问作者Della
相关产品推荐
相关产品推荐

