我这里有一个奇怪的问题,我可以通过 SSH 从外部和通过 VPN 连接到我的 Ubuntu 服务器,但我无法通过本地网络连接。
我尝试通过 mRemoteNG/Putty 和 PowerShell 通过 Open-SSH,但均未连接。
通过 OpenSSH 得到以下结果:
PS C:\Windows\system32> ssh -vvv <user>@<server>
OpenSSH_for_Windows_8.1p1, LibreSSL 3.0.2
debug3: Failed to open file:C:/Users/Suporte/.ssh/config error:2
debug3: Failed to open file:C:/ProgramData/ssh/ssh_config error:2
debug2: resolve_canonicalize: hostname <server> is address
debug2: ssh_connect_direct
debug1: Connecting to <server> [<server>] port 22.
debug3: finish_connect - ERROR: async io completed with error: 10061, io:0000021D47DAA630
debug1: connect to address <server> port 22: Connection refused
ssh: connect to host <server> port 22: Connection refused
我们使用 pfSense 作为防火墙(我不知道这是否有用),并且 Ubuntu Server 防火墙被禁用,并且我已经测试过在 Windows 10 机器上禁用防火墙,我添加了 mRemote、putty、openssh(按照微软文档建议的那样)但它也不起作用。
会是什么呢?
答案1
如果您通过 IP 地址连接,您的内部网络可能在 NAT 的不可路由地址空间(例如 192.168.1/24)上运行,并且您尝试访问的地址是您的 (PFSense) 路由器的外部 IP。如果路由器没有设置发夹路由,您的数据包将不会被重定向到/从目的地。
此外,路由器可能只是将端口 22 转发到网络内部的特定目的地。
如果以上都是真的,那么希望你的内部网络 DNS 使用的是所谓的水平分割路由,因此如果你使用 DNS姓名对于主机而不是端口,这将在两种情况下起作用。
或者,您可以使用~/.ssh/config
具有不同名称和 IP 地址的主机条目来解决问题,或者使用涉及同一配置中的代理条目的更复杂的策略。
底线是,这(可能)不是问题ssh
,而是您的网络路由和 DNS 没有将您的流量传送到正确的位置。
如果我最初的想法不正确,更多的信息可能会有所帮助。