SSHd 不确认来自公共 IP 地址的 TCP 连接

SSHd 不确认来自公共 IP 地址的 TCP 连接

我正在尝试通过公共 IP 地址的 SSH 启用对我的家庭服务器的 SSH 访问。但 SSH 服务器没有响应来自公共 IP 地址的请求。来自本地 IP 的连接工作正常。

我已经在路由器中设置了端口转发,并且在路由器防火墙和服务器 iptables 防火墙中都允许连接。

在 iptables 中,我有以下规则:

pkts bytes target     prot opt in     out     source               destination
117  7052  ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh

每次我尝试建立连接时,我都能看到“pkts”字段递增。

我还可以从 WireShark 中看到服务器在端口 22 上接收到 TCP SYN 数据包,但没有匹配的传出 ACK 数据包。

我还进行了检查,/etc/ssh/sshd以确保其中不存在任何会根据 IP 地址进行区分的东西。

我已经使用 journalctl 查看了日志,但当我尝试建立连接时,它们没有显示任何内容。我尝试使用 手动运行 sshd /usr/sbin/sshd -d,但当我尝试建立连接时没有任何输出。

现在我不知道问题可能出在哪里。还有什么可以根据 IP 地址阻止连接?

答案1

好吧,我发现了这个问题,它与 ssh 完全无关。我的服务器配置了错误的网关地址,因此它无法将数据包发送到 WWW——只能发送到 LAN 上的其他机器。这是一个愚蠢的错误,但它导致了我意想不到的行为。如果我在 WireShark 中更仔细地观察,我就会看到服务器发送 ARP 数据包来搜索错误的网关。

相关内容