Comment déterminer si un port est ouvert sur un serveur Windows? [fermé]


478

J'essaie d'installer un site sous un autre port sur un serveur, mais le port peut être fermé par un pare-feu. Existe-t-il un moyen d'effectuer un ping out ou in, sur un port spécifique, pour voir s'il est ouvert?


Réponses:


732

En supposant que c'est un port TCP (plutôt que UDP) que vous essayez d'utiliser:

  1. Sur le serveur lui-même, utilisez netstat -anpour vérifier quels ports écoutent.

  2. De l'extérieur, utilisez simplement telnet host port(ou telnet host:portsur les systèmes Unix) pour voir si la connexion est refusée, acceptée ou expire.

Sur ce dernier test, alors en général:

  • connexion refusée signifie que rien ne fonctionne sur ce port
  • accepté signifie que quelque chose tourne sur ce port
  • délai d'attente signifie qu'un pare-feu bloque l'accès

Sous Windows 7 ou Windows Vista, l'option par défaut «telnet» n'est pas reconnue comme une commande interne ou externe, un programme exploitable ou un fichier de commandes. Pour résoudre ce problème, activez-le simplement: Cliquez sur * Démarrer ** → Panneau de configurationProgrammesActiver ou désactiver les fonctionnalités Windows . Dans la liste, faites défiler vers le bas et sélectionnez Telnet Client et cliquez sur OK.


312
Dans Win7 ou Vista, l'option par défaut 'telnet' n'est pas reconnue comme une commande interne ou externe, un programme exploitable ou un fichier batch. Pour résoudre ce problème, activez-le simplement: cliquez sur Démarrer, Panneau de configuration, Programmes, puis sur Activer ou désactiver les fonctionnalités Windows. Dans la liste,
faites

12
@PankajKohli utilise plutôt le client telnet PuTTy . Il n'a pas besoin d'être installé.
Colin Pickard

52
Qu'est-ce que cela Could not open connection to the host, on port *x*: Connect failedindique?
Kenny Evitt

2
@Alnitak Je voulais juste vérifier car je pense que cela répond déjà à ma question. Quand je telnet api-3t.sandbox.paypal.com 443reçois Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedEst-ce parce que le pare-feu le bloque?
Popeye

2
il y a une différence si vous ouvrez telnet.exe, puis tapez o host portvs open command line (cmd.exe), puis tapeztelnet host port
Pawel Cioch

185

Sous Windows, vous pouvez utiliser

netstat -na | find "your_port"

pour affiner les résultats. Vous pouvez également filtrer LISTENING, ESTABLISHED,TCP et tel. Attention, il est sensible à la casse.


4
vous ne pouvez pas utiliser find comme ceci, il recherchera des fichiers, vous devez utiliser grep
Moataz Elmasry

38
@MoatazElmasry, c'est vrai sous Linux, mais c'est sur un serveur Windows, où find est la bonne commande. Grep n'est pas disponible sur Windows. Je viens d'exécuter la commande exacte mentionnée ici, et cela a parfaitement fonctionné.
Ben Wyatt

4
Quand j'ai utilisé cette commande, c'est-à-dire netstat -an | trouver "19345", je n'ai obtenu aucun résultat. Qu'est-ce que ça veut dire?
nanosoft

14
findn'a pas fonctionné dans Windows 10 pour moi, mais a netstat -na | findstr "8080"fonctionné
arun

6
rien ne se passe, pas avec find ou findstr
utileBee

85

Si vous vérifiez de l'extérieur, pas à partir du serveur lui-même, et que vous ne voulez pas déranger l'installation de telnet (car il ne vient pas avec les dernières versions de Windows) ou de tout autre logiciel, alors vous avez PowerShell natif:

Test-NetConnection -Port 800 -ComputerName 192.168.0.1 -InformationLevel Detailed

(Malheureusement, cela ne fonctionne qu'avec PowerShell 4.0 ou plus récent. Pour vérifier votre version de PowerShell, tapez $PSVersionTable.)

PS: Notez que ces jours-ci, certaines affirmations sur la twittersphère suggèrent que cette réponse pourrait être améliorée en mentionnant "Test-Connection" de PowerShell Core, ou le raccourci "tnc". Voir https://twitter.com/david_obrien/status/1214082339203993600 et aidez-moi à modifier cette réponse pour l'améliorer s'il vous plaît!


(Si vous avez une PSVersion <4.0, vous n'avez pas de chance. Consultez ce tableau:

Entrez la description de l'image ici

Même si vous pouvez mettre à niveau votre version de PowerShell en installant Windows Management Framework 4.0 , cela n'a pas fait l'affaire pour moi, l' applet de commande Test-NetConnection n'est toujours pas disponible).


3
C'est la meilleure réponse. L'installation de telnet n'est pas toujours simple sur les serveurs des autres!
TrojanName

Certainement doit être la meilleure réponse.
QtRoS

1
Il s'agit d'une option plus fiable que telnet, telnet serait simplement suspendu sans rapporter quoi que ce soit alors que le port est disponible dans mon cas.
axk

42

Sur une machine Windows, vous pouvez utiliser PortQry de Microsoft pour vérifier si une application écoute déjà sur un port spécifique à l'aide de la commande suivante:

portqry -n 11.22.33.44 -p tcp -e 80

4
Les ports pare-feu apparaîtront généralement comme "FILTRÉ".
dlanod

Vous pouvez également utiliser cet outil pour vérifier le port UDP:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

J'ai aimé ça:

netstat -an | find "8080" 

de telnet

telnet 192.168.100.132 8080

Et assurez-vous simplement que le pare-feu est désactivé sur cette machine.


Quand j'ai utilisé cette commande, c'est-à-dire netstat -an | trouver "19345", je n'ai obtenu aucun résultat. Qu'est-ce que ça veut dire? -
nanosoft

2
cela signifie que ce port est libre
Sarvar Nishonboev

Je reçois une erreur lorsque je l'exécute netstat -an | find "8080", dit:no such file named "8080"
Pragyaditya Das

24

S'il telnetn'est pas disponible, téléchargez PuTTY . Il s'agit d'un client Telnet, SSH, etc. bien supérieur et sera utile dans de nombreuses situations, pas seulement dans celui-ci, surtout si vous administrez un serveur.


Oui, mais pas pour coller du code Forth, disons, avec AmForth (à moins d'utiliser PuTTY en combinaison avec Edit Overflow ).
Peter Mortensen


12

Utilisez-le si vous souhaitez voir tous les ports utilisés et écoutés sur un serveur Windows:

netstat -an |find /i "listening"

Voir tous les ports ouverts, à l'écoute et établis:

netstat -a




1

Voici ce qui a fonctionné pour moi:

  • Ouvrez une invite de commande
  • Type telnet
  • Microsoft Telnet> ouvrez <nom d'hôte ou adresse IP> <espace> <port>

Il confirmera si le port est ouvert.


0

Un autre utilitaire que j'ai trouvé et qui est bon et petit aussi, est PortQry Command Line Port Scanner version 2.0 .

Vous pouvez cingler un serveur et un port et il vous indiquera l'état du port. Il existe un utilitaire de ligne de commande et une interface utilisateur pour cela.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.