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

同一局域网内设备Ping通但SSH/Telnet/Netcat连接失败原因排查

问题分析与排查方案

咱们来好好捋捋这个问题——两台设备同属一个LAN,能ping通但SSH、Telnet、Netcat连不上,这情况其实挺常见的,大概率不是基础网络的问题,而是特定服务的配置或者连接细节出了岔子。结合你给出的信息,我整理了几个最可能的原因和对应的排查步骤:

1. 没指定正确的SSH端口(最容易踩的坑)

你提到设备A的OpenSSH服务器监听的是2200端口,但默认SSH连接用的是22端口。如果设备B在连接时没手动指定端口,那肯定连不上。

  • 设备B上的正确连接命令:ssh -p 2200 192.168.0.16,试试这个能不能通。要是之前用的是ssh 192.168.0.16,那就是端口没指定的问题。
  • 验证设备A的监听状态:在设备A上执行netstat -tulpn | grep sshd,确认sshd确实在监听2200端口(输出里应该能看到0.0.0.0:2200或者:::2200)。

2. SSH服务器绑定了错误的IP地址

有时候sshd的配置会限制只监听本地回环地址(127.0.0.1),这样LAN里的其他设备就访问不到了。

  • 检查设备A的sshd配置文件:打开/etc/ssh/sshd_config,找ListenAddress选项。如果有这个选项,确保它的值是0.0.0.0(监听所有网卡IP)或者设备A的LAN地址192.168.0.16,而不是127.0.0.1
  • 修改后记得重启sshd服务:sudo service ssh restart(Ubuntu 14.04用这个命令就行)。

3. 隐藏的防火墙/安全工具在生效

你说防火墙已经禁用,但有时候Ubuntu里可能有其他安全工具在悄悄干活,比如ufw(哪怕你以为关了,也最好再确认下),或者第三方安全软件。

  • 再确认iptables规则:执行iptables -L -n | grep 2200,看看有没有针对2200端口的REJECT或者DROP规则。
  • 检查ufw状态:sudo ufw status,确保输出是inactive

4. 设备A的网络接口配置异常

虽然ping能通,但设备A的LAN接口可能有特殊配置,比如绑定了错误的网卡,或者被加到了其他VLAN里(不过你说同属一个LAN,这个可能性偏低,但也可以排查下)。

  • 查看设备A的IP配置:执行ifconfig,确认192.168.0.16是绑定在连接LAN的物理网卡上(比如eth0或者wlan0),而不是虚拟接口。

5. 设备B的本地限制

有时候问题出在客户端这边,比如设备B的防火墙阻止了出站的SSH请求,或者终端工具权限有问题。

  • 检查macOS防火墙:打开「系统偏好设置-安全性与隐私-防火墙」,确保允许终端或者SSH客户端的出站连接。
  • 用netcat测试端口连通性:在设备B上执行nc -zv 192.168.0.16 2200,如果显示succeeded!说明端口是通的,问题在SSH服务的配置;如果显示connection refused或者超时,说明端口确实没开放。

6. SSH服务的用户/登录权限限制

sshd的配置可能限制了某些用户登录,或者禁用了密码登录(如果你没提前配置SSH密钥的话)。

  • 检查sshd_config里的AllowUsers/DenyUsers选项:如果有AllowUsers,确保你用来登录的用户在这个列表里。
  • 检查PasswordAuthentication选项:如果设成了no,而你又没在设备B上配置SSH密钥,那肯定登录不上,要么改成yes,要么提前配置好密钥对。

内容的提问来源于stack exchange,提问作者Kostas

火山引擎 最新活动