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

如何正确配置EC2实例仅允许本人公网IP访问SSH

核心结论

你列的三个IP里,只有控制台「我的IP」自动填充的公网地址是SSH访问时AWS能识别到的你的真实源地址,剩下两个都是内网地址,配到公网访问规则里完全无效。

三个IP的具体属性

  • 192.168.1.233:本地WiFi分配的局域网私网IP,仅在你当前连接的本地内网生效。流量经过家里路由器做NAT转换后,这个地址不会出现在发往AWS的公网报文里,加到允许列表没有任何作用。
  • 157.100.197.222/32:你当前上网出口的公网IP,是EC2收到你的SSH请求时,报文头里携带的真实源地址,这是你唯一需要添加到允许规则的个人地址。
  • 172.31.30.243:EC2实例自身在VPC内的私网IP,是实例的地址,不是你的访问源地址,加到入站允许规则属于匹配对象完全错误。

之前配置异常的原因

  1. 无效规则占比太高:你把两个完全不会作为访问源的内网IP加到允许列表,实际生效的只有公网IP这一条规则。如果填充这个公网IP时你开了代理/VPN,或者运营商临时给你分配的IP已经变动,就会直接匹配到拒绝规则,导致连接失败。
  2. 忽略网络ACL的无状态特性:安全组是有状态防火墙,主动发起的连接对应的回包会自动放行;但网络ACL是无状态的,只加入站允许规则、不配置对应出站放行规则的话,SSH的回包会被直接拦截。
  3. 规则优先级逻辑错误:网络ACL按规则号从小到大匹配,命中即执行。如果你之前配置的全量拒绝规则序号比新加的三条允许规则序号小,会直接命中拒绝规则,根本不会走到后面的允许逻辑。
  4. 你之前配置「拒绝/8、/16、/24网段SSH、允许其余所有来源」时能正常连接,本质是你写的这些网段都是私网CIDR段,公网过来的SSH流量源IP本来就不属于这些私网段,自然会命中后续的允许规则,不代表你的规则配置逻辑正确。

正确配置方法

优先使用安全组做SSH访问控制(推荐,配置简单不易出错)

安全组是实例级的有状态防火墙,做SSH源限制不需要配置双向规则:

  1. 删除原有安全组中放行0.0.0.0/0访问22端口的规则
  2. 新增入站规则:允许TCP协议22端口,源地址填写157.100.197.222/32,其余所有来源访问22端口默认被拒绝
  3. 不需要额外调整出站规则,有状态特性会自动放行当前SSH连接的回包

如有合规要求必须同时配置网络ACL

网络ACL是子网级的无状态防火墙,必须同时配置入站、出站双向规则:

  1. 入站规则(按规则号从小到大排列,小序号规则优先匹配):
    • 规则号100:允许TCP协议22端口,源地址为157.100.197.222/32
    • 规则号200:拒绝TCP协议22端口,源地址为0.0.0.0/0
    • 其余业务需要的入站规则按序号往后排列即可
  2. 出站规则(必须配置,否则SSH回包无法返回你的本地设备):
    • 规则号100:允许TCP协议,目的端口范围为1024-65535,目的地址为157.100.197.222/32
    • 其余业务需要的出站规则按序号往后排列即可

注意:如果你使用的是家庭宽带动态公网IP,每次重启路由器后出口公网IP可能发生变动,届时需要更新规则中配置的IP地址,否则会无法连接实例。不要将192.168.0.0/16、172.16.0.0/12、10.0.0.0/8这类私网地址段添加到公网访问的允许规则中,这类地址不会在公网路由,添加后没有任何实际作用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 03:18:16