web-dev-qa-db-fra.com

Qu'est-ce qui provoque le message «Connexion refusée»?

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

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 ?

119
user9517

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:

  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'écoute.

C'est de loin la raison la plus courante du message. Assurez-vous d'abord que vous essayez de vous connecter au système approprié. Si vous devez ensuite déterminer si c'est le problème, exécutez sur le système distant netstat ou ss1 par exemple. si vous attendez 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, ce qui précède ne produira aucune sortie. Si vous voyez une sortie, confirmez que c'est ce que vous attendez, puis consultez la section pare-feu ci-dessous.

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

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

$ Sudo tcpdump -n Hôte 192.0.2.1 et port 22222
tcpdump: sortie verbeuse supprimée, utilisez -v ou -vv pour le décodage complet du protocole
écoute sur enp14s0, type de liaison 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, nop, wscale 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 un . à représente l'indicateur 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 avec icmp-port-unreachable cela entraînera également un message de refus de connexion. Encore une fois, vous pouvez le voir avec tcpdump (ou similaire)

$ Sudo tcpdump -n icmp
tcpdump: sortie verbeuse supprimée, utilisez -v ou -vv pour le décodage complet du protocole

écoute sur enp14s0, type de liaison EN10MB (Ethernet), taille de capture 262144 octets 13: 03: 24.149897 IP 192.0.2.1> 192.0.2.2: ICMP 192.0.2.1 port TCP 22222 inaccessible, longueur 68

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


Alors maintenant, vous savez ce qui cause le message de refus de connexion, vous devez prendre les mesures appropriées, par exemple contactez l'administrateur du pare-feu ou recherchez la raison pour laquelle le processus n'écoute pas.

1 D'autres outils sont probablement disponibles.

129
user9517

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

Sudo service ssh status

Et trouver 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).

5
SharpC

Mon pare-feu Centos Shorewall était à court d'espace disque. confusément, certains sites, comme YouTube et MS ont fonctionné. D'autres comme cnn.com ont échoué. Vider de l'espace et redémarrer le serveur a résolu le problème pour moi.

0
Mike Ross