user9517 Asked: 2015-09-29 04:13:24 +0800 CST2015-09-29 04:13:24 +0800 CST 2015-09-29 04:13:24 +0800 CST 是什么导致“连接被拒绝”消息? 772 这是一个关于连接被拒绝的典型问题 我们看到很多关于大意的问题 当我尝试连接到系统时,我收到一条消息 拒绝连接 为什么是这样 ? networking connection-refused 2 个回答 Voted Best Answer user9517 2015-09-29T04:13:24+08:002015-09-29T04:13:24+08:00 注意:此消息是您尝试解决的问题的症状。了解消息的原因最终将引导您解决问题。 消息“连接被拒绝”有两个主要原因: 您尝试连接的 IP:Port 上没有任何内容正在监听。 该端口被防火墙阻止。 没有进程在监听。 到目前为止,这是该消息最常见的原因。首先确保您尝试连接到正确的系统。如果您要确定这是否是问题所在,请在远程系统上运行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 标志的数据包。这会关闭连接并导致 Connection Refused 消息,例如 $ 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,win 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其他工具可能可用。 SharpC 2016-05-17T01:39:07+08:002016-05-17T01:39:07+08:00 对我来说,使用 Debian 6 挤压就像检查 SSH 服务一样简单: sudo service ssh status 并且发现什么都不存在(带有消息ssh: unrecognized service)只是安装服务: sudo apt-get install openssh-server 如果您没有获得 SFTP 连接,这也适用,因为 SFTP 是 SSH 的子集(而 FTPS 是 FTP 的子集)。
消息“连接被拒绝”有两个主要原因:
没有进程在监听。
到目前为止,这是该消息最常见的原因。首先确保您尝试连接到正确的系统。如果您要确定这是否是问题所在,请在远程系统上运行netstat或ss 1例如,如果您希望进程正在侦听端口 22222
或者
对于 OSX,一个合适的命令是
如果没有任何东西在听,那么上面的内容将不会产生任何输出。如果您看到一些输出,请确认这是您所期望的,然后查看下面的防火墙部分。
如果您无权访问远程系统并且想在向相关管理员报告问题之前确认问题,您可以使用 tcpdump(wireshark 或类似)。
当尝试连接到没有任何内容的 IP:port 时,远程系统对初始 SYN 数据包的响应是一个带有 RST,ACK 标志的数据包。这会关闭连接并导致 Connection Refused 消息,例如
请注意,tcpdump 使用. 来表示 ACK标志。
端口被防火墙阻止
如果端口被防火墙阻止并且防火墙已配置为响应,
icmp-port-unreachable
这也会导致连接被拒绝消息。同样,您可以使用 tcpdump (或类似的)看到这一点请注意,这也告诉我们阻止防火墙的位置。
所以现在您知道是什么导致了连接被拒绝消息,您应该采取适当的措施,例如联系防火墙管理员或调查进程未侦听的原因。
1其他工具可能可用。
对我来说,使用 Debian 6 挤压就像检查 SSH 服务一样简单:
并且发现什么都不存在(带有消息
ssh: unrecognized service
)只是安装服务:如果您没有获得 SFTP 连接,这也适用,因为 SFTP 是 SSH 的子集(而 FTPS 是 FTP 的子集)。