什么原因导致出现‘连接被拒绝’消息?

什么原因导致出现‘连接被拒绝’消息?

这是一个典型问题关于连接被拒绝

我们看到很多这样的问题

当我尝试连接到系统时,我收到一条消息

连接被拒绝

为什么是这样 ?

答案1

笔记:此消息是您正在尝试解决的问题的症状。了解消息的原因最终将帮助您解决问题。

“连接被拒绝”消息主要有两个原因:

  1. 您尝试连接的 IP:端口上没有任何内容正在监听。
  2. 该端口被防火墙阻止。

没有进程正在监听。

这是迄今为止最常见的导致该消息的原因。首先确保您尝试连接到正确的系统。然后,要确定这是否是问题所在,请在远程系统上运行网络状态或者党卫军1例如,如果你期望一个进程监听端口 22222

sudo netstat -tnlp | grep :22222

或者

ss -tnlp | grep :22222

对于 OSX,合适的命令是

sudo netstat -tnlp tcp | grep '\.80 '

如果没有任何内容正在监听,则上述内容将不会产生任何输出。如果您看到一些输出,请确认它是否符合您的预期,然后参阅下面的防火墙部分。

如果您无法访问远程系统,并且想要在向相关管理员报告之前确认问题,则可以使用 tcpdump(wireshark 或类似程序)。

当尝试连接到没有监听的 IP:port 时,远程系统对初始 SYN 数据包的响应是设置了标志 RST、ACK 的数据包。这会关闭连接并导致“连接被拒绝”消息,例如

$ sudo tcpdump -n 主机 192.0.2.1 和端口 22222
tcpdump:抑制详细输出,使用 -v 或 -vv 进行完整协议解码,
监听 enp14s0,链路类型 EN10MB(以太网),捕获大小 262144 字节

12:31:27.013976 IP 192.0.2.2.34390 > 192.0.2.1.22222:标志[摘要],序列 1207858804,win 29200,选项 [mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7],长度 0

12:31:27.020162 IP 192.0.2.1.22222 > 192.0.2.2.34390:标志[R.],序号 0,确认 1207858805,获胜 0,长度 0

请注意,tcpdump 使用代表 ACK旗帜。

端口被防火墙阻止

如果端口被防火墙阻止,并且防火墙已配置为icmp-port-unreachable对此作出响应,也会导致连接被拒绝的消息。同样,您可以使用 tcpdump(或类似程序)查看此消息

$ sudo tcpdump -n icmp
tcpdump:抑制详细输出,使用 -v 或 -vv 进行完整协议解码,监听

enp14s0,链路类型 EN10MB(以太网),捕获大小 262144 字节 13:03:24.149897 IP 192.0.2.1 > 192.0.2.2:ICMP 192.0.2.1 tcp 端口 22222 无法访问,长度 68

请注意,这还告诉我们阻塞防火墙在哪里。


所以现在您知道是什么导致了“连接被拒绝”消息,您应该采取适当的措施,例如联系防火墙管理员或调查进程不监听的原因。

1可能还有其他工具可用。

答案2

对于我来说,在 Debian 6 squeeze 上,很简单检查 SSH 服务

sudo service ssh status

却发现什么都不存在(带有消息ssh: unrecognized service安装服务

sudo apt-get install openssh-server

如果您没有获得 SFTP 连接,这也有效,因为 SFTP 是 SSH 的一个子集(而 FTPS 是 FTP 的一个子集)。

答案3

什么原因导致出现‘连接被拒绝’消息?

  • 错误指定了 IP 地址或端口号。
  • 服务器应用程序是没有运行监听该端口。
  • 服务器应用程序正在运行,但是不在听在指定的端口上。
  • 本地/远程防火墙阻止连接。
  • 服务器超载或资源枯竭。

相关内容