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?

Jason
la source

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.

Alnitak
la source
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.

J.Celmer
la source
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).

knocte
la source
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
Gunjan Moghe
la source
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.

Sarvar Nishonboev
la source
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.

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

Voulez-vous un outil pour le faire? Il existe un site Web à http://www.canyouseeme.org/ . Sinon, vous avez besoin d'un autre serveur pour vous rappeler pour voir si un port est ouvert ...

Douglas Mayle
la source
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
zehnaseeb
la source
7

Sur Windows Server, vous pouvez utiliser

netstat -an | where{$_.Contains("Yourport")}
Derbium
la source
Ne résout en aucun cas le problème du pare-feu.
Marquis de Lorne
5
Cela fonctionne sur PowerShell
Paco Zarate
Ou voulez-vous dire "un serveur Windows"?
Peter Mortensen
4

Une autre option est tcping .

Par exemple:

tcping host port

Vadzim
la source
4

PsPing de Sysinternals est également très bon.

Peter Mortensen
la source
Bon outil. Exemple de code: PsPing -n 20 -i 0 servername: port
Asher
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.

p_champ
la source
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.

Gilberto
la source