Ceci est une question canonique sur le refus de connexion
Nous voyons beaucoup de questions à l'effet
Lorsque j'essaie de me connecter à un système, je reçois un message.
Connexion rejetée
Pourquoi est-ce ?
Ceci est une question canonique sur le refus de connexion
Nous voyons beaucoup de questions à l'effet
Lorsque j'essaie de me connecter à un système, je reçois un message.
Connexion rejetée
Pourquoi est-ce ?
Réponses:
Remarque : Ce message est un symptôme du problème que vous essayez de résoudre. Comprendre la cause du message vous mènera finalement à résoudre votre problème.
Le message 'Connexion refusée' a deux causes principales:
Aucun processus n'écoute.
C'est de loin la raison la plus courante du message. Commencez par vous assurer que vous essayez de vous connecter au bon système. Si vous devez ensuite déterminer si tel est le problème, exécutez netstat ou ss 1 sur le système distant, par exemple si vous prévoyez qu'un processus écoute sur le port 22222.
sudo netstat -tnlp | grep :22222
ou
ss -tnlp | grep :22222
Pour OSX, une commande appropriée est
sudo netstat -tnlp tcp | grep '\.80 '
Si rien n’écoute, alors ce qui précède ne produira aucune sortie. Si vous voyez des résultats, 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 appropriés, vous pouvez utiliser tcpdump (Wirehark ou similaire).
Lorsqu'une connexion est tentée vers un IP: port où rien n'est à l'écoute, la réponse du système distant au paquet SYN initial est un paquet avec les indicateurs RST, ACK définis. Ceci ferme la connexion et provoque le message Connection Refused, par exemple
$ sudo tcpdump -n hôte 192.0.2.1 et port 22222
tcpdump: sortie prolixe supprimée, utilisez -v ou -vv pour le décodage de protocole complet en
écoute sur enp14s0, type de lien EN10MB (Ethernet), taille de capture 262144 octets
12: 31: 27.013976 IP 192.0.2.2.34390> 192.0.2.1.22222: drapeaux [S] , seq 1207858804, victoire 29200, options [mss 1460, sackOK, TS val 15306344 ecr 0, non, échelle 7], longueur 0
12: 31: 27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390: drapeaux [R.] , seq 0, ack 1207858805, victoire 0, longueur 0
Notez que tcpdump utilise a . pour représenter le drapeau ACK .
Le port est bloqué par un pare-feu
Si le port est bloqué par un pare-feu et que le pare-feu a été configuré pour répondre, icmp-port-unreachable
cela provoquera également un message de connexion refusée. Encore une fois, vous pouvez voir cela avec tcpdump (ou similaire)
$ sudo tcpdump -n icmp
tcpdump: sortie verbeuse supprimée, utilisez -v ou -vv pour le décodage complet du protocole en
écoute enp14s0, type de lien EN10MB (Ethernet), taille de capture 262144 octets 13: 03: 24.149897 IP 192.0.2.1> 192.0. 2.2: port TCP 2222 ICMP 192.0.2.1 inaccessible, longueur 68
Notez que cela nous indique également où se trouve le pare-feu bloquant.
Alors maintenant que vous savez ce qui cause le message de 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.
Pour moi sous Debian 6 squeeze, c'était aussi simple que de vérifier le service SSH :
sudo service ssh status
Et ne rien trouver existait (avec le message ssh: unrecognized service
) en installant simplement le 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).