You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于3台Ubuntu主机的SSH跨防火墙连接配置咨询

基于3台Ubuntu主机的SSH跨防火墙连接配置咨询

嘿,我看你已经在尝试用DNAT的方式实现不用-JProxyCommand参数的SSH跳转了,这个思路挺巧妙的!我来帮你梳理下当前的配置,并给出一些验证和优化的建议,确保你的连接能正常工作:

你的环境与需求梳理

  • 三台Ubuntu主机的IP与SSH端口信息:
    • 发起连接的客户端主机:192.168.1.2
    • 中转网关主机:192.168.1.3,SSH端口为22822
    • 目标主机:192.168.1.4,使用SSH默认端口22
  • 核心需求:从第一台主机直接执行 ssh user@192.168.1.3 -p 22822 就能连接到第三台主机,且不使用-JProxyCommand这类代理参数

已完成的UFW配置分析

中转网关(第二台主机)的关键配置

你做的这些配置是实现DNAT转发的核心,方向是对的:

  1. 允许外部访问22822端口:
    sudo ufw allow 22822
    
  2. 修改UFW默认转发策略为ACCEPT,确保转发规则能生效:
    sudo nano /etc/default/ufw
    # 将 DEFAULT_FORWARD_POLICY 改为 "ACCEPT"
    
  3. before.rules中添加DNAT规则,把访问22822端口的TCP流量转发到第三台主机的22端口:
    sudo nano /etc/ufw/before.rules
    # 注意要把这段内容放在*filter配置段之前
    :PREROUTING ACCEPT [0:0]
    -A PREROUTING -p tcp --dport 22822 -j DNAT --to-destination 192.168.1.4:22
    COMMIT
    
  4. 重启UFW让所有配置生效:
    sudo ufw disable
    sudo ufw enable
    

目标主机(第三台主机)的配置

你已经开放了22端口,确保中转过来的SSH流量能被接收:

sudo ufw allow 22

验证与优化建议

  1. 务必开启内核IP转发
    中转网关主机需要开启IPv4转发功能,否则DNAT规则无法正常工作。你可以这样检查并开启:
    # 临时开启(重启后失效)
    sudo sysctl net.ipv4.ip_forward=1
    # 永久开启(写入配置文件,重启后依然生效)
    echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
    
  2. 测试连接是否正常
    从第一台主机执行你期望的命令:
    ssh user@192.168.1.3 -p 22822
    
    如果连接失败,可以在中转网关主机上抓包验证流量是否被正确转发:
    sudo tcpdump -i any port 22822 or port 22
    
  3. 安全性优化建议
    • 限制22822端口的访问源,只允许第一台主机的IP访问,避免端口暴露给整个网段:
      sudo ufw delete allow 22822
      sudo ufw allow from 192.168.1.2 to any port 22822
      
    • 目标主机的22端口也可以限制只允许中转网关的IP访问,进一步降低安全风险:
      sudo ufw delete allow 22
      sudo ufw allow from 192.168.1.3 to any port 22
      

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

火山引擎 最新活动