Answers:
注意:此消息是您要解决的问题的症状。了解消息的原因最终将引导您解决问题。
消息“连接被拒绝”有两个主要原因:
没有进程在监听。
到目前为止,这是发出此消息的最常见原因。首先,请确保您尝试连接到正确的系统。如果然后要确定这是否是问题,请在远程系统上运行netstat或ss 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:标志[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:标志[R.],seq 0,ack 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其他工具也可能可用。