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

如何实现仅允许VPN连接用户通过AWS VPN安全SSH访问内网Linux主机

如何实现仅允许VPN连接用户通过AWS VPN安全SSH访问内网Linux主机

这个需求核心就是把SSH访问的权限牢牢锁在AWS VPN的网段范围内,结合你的场景(主机在路由器后、有静态公网/私网IP),我给你一步步拆解实现步骤:

1. 先确认AWS VPN的私网网段

首先你得从AWS控制台或者VPN配置文件里拿到AWS VPN分配给你的客户网关/虚拟私有网关的CIDR网段,比如常见的像10.0.0.0/24——这个是后续所有限制规则的核心,只有来自这个网段的流量才允许访问SSH。

2. 配置路由器的端口转发(DNAT)+ 源IP限制

因为你的Linux主机在路由器后面,公网静态IP是挂在路由器上的,所以需要做端口转发把公网的22端口映射到内网主机的22端口,但绝对不能开放给所有公网IP:

  • 登录你的路由器管理界面,找到「端口转发」或「DNAT规则」选项
  • 添加一条规则:
    • 源IP范围:填写你刚才拿到的AWS VPN CIDR(比如10.0.0.0/24)
    • 外部端口:22
    • 内部地址:你的Linux主机静态私网IP(比如192.168.1.100)
    • 内部端口:22
  • 保存规则并重启路由器生效

3. 加固Linux主机本地防火墙

即使路由器做了限制,主机本地再加一层防火墙限制会更安全,这里分两种常用防火墙工具说明:

用ufw(Ubuntu/Debian系常用)

# 先允许AWS VPN网段访问SSH
sudo ufw allow from 10.0.0.0/24 to any port 22
# 拒绝其他所有SSH请求
sudo ufw deny 22
# 启用ufw(如果之前没开的话)
sudo ufw enable

用iptables(通用Linux防火墙)

# 允许VPN网段的SSH流量
sudo iptables -A INPUT -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT
# 拒绝其他所有SSH流量
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
# 保存规则(避免重启失效,不同系统命令略有不同)
# Ubuntu/Debian:
sudo netfilter-persistent save
# CentOS/RHEL:
sudo service iptables save

4. 可选:提升SSH本身的安全性

为了进一步降低风险,建议禁用SSH密码登录,只允许密钥登录:

  • 编辑SSH配置文件:sudo nano /etc/ssh/sshd_config
  • 找到并修改以下配置:
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  • 重启SSH服务生效:sudo systemctl restart sshd

最后验证配置

  • 先连接上AWS VPN,然后尝试SSH:ssh 你的主机用户名@路由器公网静态IP,应该能正常登录
  • 断开VPN后再尝试SSH,应该会出现超时或者连接被拒绝的情况,这就说明规则生效了

备注:内容来源于stack exchange,提问作者Roronoa Zoro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:54:34