什么导致“拒绝连接”消息?

这是关于拒绝连接的规范问题

我们看到很多问题

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

拒绝连接

为什么是这样 ?

注意 :此消息是您尝试解决的问题的症状。 了解信息的原因将最终导致你解决你的问题。

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

  1. 您正在尝试连接的IP:端口没有任何信息。
  2. 该端口被防火墙阻止。

没有进程正在倾听。

这是消息最常见的原因。 首先确保您正在尝试连接到正确的系统。 如果您接下来要确定这是否是问题,请在远程系统上运行netstat或ss 1,例如,如果您希望进程正在侦听端口22222

sudo netstat -tnlp | grep :22222 

要么

 ss -tnlp | grep :22222 

对于OSX,一个合适的命令是

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

如果没有听,那么上面将不会产生输出。 如果你看到一些输出,然后确认这是你所期望的,然后看到下面的防火墙部分。

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

当连接尝试到没有监听的IP:端口时,远程系统对初始SYN数据包的响应是一个标记为RST,ACK的数据包。 这将closures连接并导致连接被拒绝的消息,例如

$ 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:标志[S] ,seq 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:Flags [R.] ,seq 0,ack 1207858805,win 0,length 0

请注意,tcpdump使用一个 来表示ACK标志。

端口被防火墙阻止

如果端口被防火墙阻止,并且防火墙已configuration为使用icmp-port-unreachable进行响应,则也会导致连接拒绝消息。 再次,你可以看到这与tcpdump(或类似)

$ sudo tcpdump -n icmp
tcpdump:详细输出压缩,使用-v或-vv进行完整的协议解码

侦听enp14s0,链接typesEN10MB(以太网),捕获大小262144字节13:03:24.149897 IP 192.0.2.1> 192.0.2.2:ICMP 192.0.2.1 tcp端口22222不可达,长度68

请注意,这也告诉我们阻止防火墙的位置。


因此,现在您知道是什么原因导致Connection refused消息,您应该采取适当的措施,例如联系防火墙pipe理员或调查过程不听的原因。

1其他工具可能可用。

对于我来说,在Debian 6上挤压它就像检查SSH服务一样简单:

 sudo service ssh status 

并没有发现任何东西存在(与消息ssh: unrecognized service )只是安装服务 :

 sudo apt-get install openssh-server 

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

我的Centos Shorewall防火墙已经用完了磁盘空间。 令人困惑的是,一些网站,如YouTube和MS工作。 其他像cnn.com失败。 清理一些空间并重新启动服务器为我解决了这个问题。