我运行的是 Ubuntu 12.04,无法通过 SSH 从“Internet”连接。路由器是 TL-MR3420,设置为将请求转发到 ubuntu 机器上的一个 NIC(总共有 3 个 NIC)。
我可以从“本地”网络/LAN 上的客户端进行 SSH。
路由器中的转发机制似乎有效。如果我在 Ubuntu 计算机上停止 SSH 服务,并在 Windows 计算机上启动 SSH 服务 - 它运行良好。
我不使用标准端口 22,但据我所知这应该不是问题 - 因为它在 Win 机器上的同一端口上工作。
由于我的公共 IS 不是静态的,因此我使用 dynDNS 服务,但如前所述,相同的设置可在 win 机器上运行。
路由器位于 192.168.0.1
Ubuntu NIC 具有以下 IP:eth2 192.168.0.100,eth1 192.168.0.101,eth0 192.168.0.102,并且我已将“外部”请求转发到 192.168.0.100
关于 Ubuntu 机器上的防火墙设置,我已经禁用 ufw,并且命令 ufw status 给出状态:不活动。
我不知道这是相关信息,但是
命令 iptables --list 给出:
链输入(策略接受)目标保护选择源目标
链转发(策略接受)目标保护选择源目标
链输出(策略接受)目标保护选择源目标
我尝试借助 wireshark(我不太习惯使用的工具)来捕获流量,似乎有几个(3 个?)“请求”实际上到达了 NIC,但是……什么也没有发生。
在这些尝试期间,系统日志不会显示任何条目。
或许是一些路由问题,但我已经达到了我的能力水平并且陷入了困境......非常感谢所有帮助和支持来解决这个问题。
我是 Linux 新手,所以请不要假设我的配置是正确的 - 但正如我之前所写的 - 如果启动 SSH 的客户端在 LAN 上,那么一切都可以正常工作。
附言:我也曾尝试通过互联网使用 VPN(PPP),但没有成功——VPN 再次在 Windows 机器上运行...所以我最好的猜测是,这与 ubuntu 机器如何处理(IP)流量有关,而不是 TL-MR3420 路由器或其他网络问题。
答案1
可能发生的情况是 SSH 服务未在所有网络接口上运行。检查你的/etc/ssh/sshd_config
文件是否包含以下内容
端口(您的端口) #使用这些选项来限制 sshd 将绑定到哪些接口/协议 #聆听地址 :: #监听地址 0.0.0.0
并且该ListenAddress
指令是注释掉了。