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 ?
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. 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.
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).
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.