166 votes

Quelle est la cause du message "Connexion refusée" ?

Il s'agit d'un Question canonique à propos de Connexion refusée

Nous voyons beaucoup de questions à l'effet

Lorsque j'essaie de me connecter à un système, j'obtiens un message

Connexion refusée

Pourquoi ?

2 votes

Nous rencontrons souvent ce genre de problème dans Apache Hadoop, où il est souvent causé par des erreurs de configuration dans le client : à quel hôte parler, à quoi correspondent leurs tables DNS ou /etc/host, ou un décalage entre les ports utilisés par un service et ceux que le client pense devoir utiliser. En conséquence, nous avons une entrée wiki dédiée sur le sujet. De nombreux problèmes se posent ailleurs, mais (espérons-le) à plus petite échelle. Déboguer des problèmes de connexion dans un cluster de 1000 nœuds n'est pas une partie de plaisir.

1 votes

Le lien d'entrée de votre wiki dédié pointe vers cette question ;)

1 votes

Bonne prise. Voici le lien officiel : wiki.apache.org/hadoop/ConnexionRefused . Je vais ajouter une référence croisée de là à ici pour cette boucle complète.

172voto

user9517 Points 113163

Nota : Ce message est un symptôme du problème que vous essayez de résoudre. Comprendre la cause du message vous conduira finalement à la résolution de votre problème.

Le message "Connexion refusée" a deux causes principales :

  1. Rien n'écoute sur l'IP:Port auquel vous essayez de vous connecter.
  2. Le port est bloqué par un pare-feu.

Aucun processus n'est à l'écoute.

C'est de loin la raison la plus fréquente de ce message. Vérifiez d'abord que vous essayez de vous connecter au bon système. Si vous voulez ensuite déterminer si c'est le problème, sur le système distant, exécutez les commandes suivantes netstat o ss 1 par exemple, si vous attendez qu'un processus écoute sur le port 22222

sudo netstat -tnlp | grep :22222

o

ss -tnlp | grep :22222

Pour OSX, une commande appropriée est

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

Si rien n'est en train d'écouter, la procédure ci-dessus ne produira aucun résultat. Si vous voyez une sortie, confirmez que c'est ce que vous attendez, puis consultez la section sur le pare-feu ci-dessous.

Si vous n'avez pas accès au système distant et que vous souhaitez confirmer le problème avant de le signaler aux administrateurs concernés, vous pouvez utiliser tcpdump (wireshark ou similaire).

Lorsqu'une connexion est tentée sur un IP:port où rien n'est en écoute, la réponse du système distant au paquet SYN initial est un paquet avec les drapeaux RST,ACK. Cela ferme la connexion et provoque le message Connection Refused (refus de connexion), par ex.

$ sudo tcpdump -n hôte 192.0.2.1 et port 22222
tcpdump : sortie verbeuse supprimée, utiliser -v ou -vv pour un décodage complet du protocole
écoute sur enp14s0, link-type EN10MB (Ethernet), taille de la capture 262144 bytes

12:31:27.013976 IP 192.0.2.2.34390 > 192.0.2.1.22222 : Drapeaux [S] , seq 1207858804, win 29200, options [mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7], length 0

12:31:27.020162 IP 192.0.2.1.22222 > 192.0.2.2.34390 : Drapeaux [R.] , seq 0, ack 1207858805, win 0, length 0

Notez que tcpdump utilise un . a représente l'ACK drapeau.

Le port est bloqué par un pare-feu

Si le port est bloqué par un pare-feu et que ce dernier a été configuré pour répondre par icmp-port-unreachable cela provoquera également un message de refus de connexion. Encore une fois, vous pouvez voir cela avec tcpdump (ou similaire)

$ sudo tcpdump -n icmp
tcpdump : sortie verbeuse supprimée, utiliser -v ou -vv pour un décodage complet du protocole

écoute sur enp14s0, link-type EN10MB (Ethernet), taille de la capture 262144 bytes 13:03:24.149897 IP 192.0.2.1 > 192.0.2.2 : ICMP 192.0.2.1 tcp port 22222 unreachable, longueur 68

Notez que cela nous indique également où se trouve le pare-feu bloquant.


Maintenant que vous savez ce qui cause le message Connexion refusée, vous devez prendre les mesures appropriées, par exemple contacter l'administrateur du pare-feu ou rechercher la raison pour laquelle le processus n'écoute pas.

1 D'autres outils sont probablement disponibles.

5 votes

Version ELI5 : cela signifie que la demande de connexion est parvenue à l'autre ordinateur, et que ce dernier n'avait aucune idée de ce dont vous parliez.

0 votes

"Aucun processus n'est à l'écoute." La principale raison

0 votes

Dans mon cas, quelque chose écoutait mais sur un nœud différent de celui auquel je tentais de me connecter. Oups.

9voto

SharpC Points 233

Pour moi, sur Debian 6 squeeze, c'était aussi simple que vérifier le service SSH :

sudo service ssh status

Et constatant que rien n'existait (avec le message ssh: unrecognized service ) juste installation du service :

sudo apt-get install openssh-server

Cela fonctionne également si vous n'obtenez pas de connexion SFTP, car SFTP est un sous-ensemble de SSH (alors que FTPS est un sous-ensemble de FTP).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X