Como determino se uma porta está aberta em um servidor Windows? [fechadas]


478

Estou tentando instalar um site em uma porta alternativa em um servidor, mas a porta pode estar fechada por um firewall. Existe uma maneira de efetuar ping ou entrar, em uma porta específica, para ver se está aberta?


Respostas:


732

Supondo que seja uma porta TCP (em vez de UDP) que você está tentando usar:

  1. No próprio servidor, use netstat -anpara verificar quais portas estão escutando.

  2. Do lado de fora, basta usar telnet host port(ou telnet host:portnos sistemas Unix) para ver se a conexão é recusada, aceita ou expirou.

Nesse último teste, em geral:

  • conexão recusada significa que nada está sendo executado nessa porta
  • aceito significa que algo está sendo executado nessa porta
  • timeout significa que um firewall está bloqueando o acesso

No Windows 7 ou Windows Vista, a opção padrão 'telnet' não é reconhecida como um comando interno ou externo, programa operável ou arquivo em lote. Para resolver isso, ative-o: Clique em * Iniciar ** → Painel de controleProgramasAtivar ou desativar os recursos do Windows . Na lista, role para baixo, selecione Cliente Telnet e clique em OK.


312
No Win7 ou Vista, a opção padrão 'telnet' não é reconhecida como um comando interno ou externo, programa operável ou arquivo em lote. Para resolver isso, ative-o: Clique em Iniciar, Painel de controle, Programas e ative ou desative os Recursos do Windows. Na lista, role para baixo e selecione Cliente Telnet e clique em OK
volody

12
@PankajKohli usa o cliente de telnet PuTTy . Não precisa ser instalado.
Colin Pickard

52
O que Could not open connection to the host, on port *x*: Connect failedindica?
9119 Kenny Evitt

2
@ Alnitak Eu só queria verificar, pois acho que isso já responde à minha pergunta. Quando telnet api-3t.sandbox.paypal.com 443recebo Connecting to api-3t.sandbox.paypal.com...Could not open connection to the host on port 443: Connect failedÉ por que o firewall está bloqueando?
Popeye

2
há uma diferença se você telnet.exe aberto e, em seguida, digite o host portvs linha de comando aberta (cmd.exe) e digitetelnet host port
Pawel Cioch

185

No Windows você pode usar

netstat -na | find "your_port"

para restringir os resultados. Você também pode filtrar para LISTENING, ESTABLISHED, TCPe tal. Lembre-se de que diferencia maiúsculas de minúsculas.


4
você não pode usar achado como este, ele vai estar à procura de arquivos, você deve usar grep
Moataz Elmasry

38
@MoatazElmasry, isso é verdade no Linux, mas isso é em um servidor Windows, onde find é o comando correto. O Grep não está disponível no Windows. Acabei de executar o comando exato mencionado aqui e funcionou perfeitamente.
Ben Wyatt

4
Quando eu usei esse comando, ie netstat -an | encontrar "19345", não obtive nenhum resultado. O que isso significa?
Nanosoft 22/07

14
findnão funcionou no Windows 10 para mim, mas netstat -na | findstr "8080"funcionou
arun

6
nada acontece, não com localização ou findstr
usefulBee

84

Se você estiver verificando de fora, não do próprio servidor, e não quiser se preocupar em instalar o telnet (como ele não vem nas últimas versões do Windows) ou em qualquer outro software, você possui o PowerShell nativo:

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

(Infelizmente, isso funciona apenas com o PowerShell 4.0 ou mais recente. Para verificar sua versão do PowerShell, digite $PSVersionTable.)

PS: Observe que, atualmente, existem algumas alegações na twittersphere que sugerem que essa resposta poderia ser melhorada ao mencionar "Conexão de teste" do PowerShell Core ou o atalho "tnc". Consulte https://twitter.com/david_obrien/status/1214082339203993600 e ajude-me a editar esta resposta para melhorá-la, por favor!


(Se você tem uma PSVersion <4.0, não tem sorte. Verifique esta tabela:

Digite a descrição da imagem aqui

Embora você possa atualizar sua versão do PowerShell instalando o Windows Management Framework 4.0 , ele não fez o truque para mim, o cmdlet Test-NetConnection ainda não está disponível).


3
Esta é a melhor resposta. A instalação do telnet nem sempre é direta nos servidores de outras pessoas!
TrojanName 25/02/19

Definitivamente deve ser a melhor resposta.
QtRoS

1
Esta é uma opção mais confiável que o telnet, o telnet simplesmente não relatou nada enquanto informa que a porta está disponível no meu caso.
axk 3/01

42

Em uma máquina Windows, você pode usar o PortQry da Microsoft para verificar se um aplicativo já está escutando uma porta específica usando o seguinte comando:

portqry -n 11.22.33.44 -p tcp -e 80

4
As portas com firewall geralmente aparecem como "FILTRADAS".
dlanod

Você pode usar essa ferramenta para verificar a porta UDP, bem como:portqry -n 11.22.33.44 -p udp -e 19132
Antony

41

Eu fiz assim:

netstat -an | find "8080" 

do telnet

telnet 192.168.100.132 8080

E apenas verifique se o firewall está desativado nessa máquina.


Quando eu usei esse comando, ie netstat -an | encontrar "19345", não obtive nenhum resultado. O que isso significa? -
Nanosoft

2
isso significa que esta porta está livre
Sarvar Nishonboev

Eu recebo um erro quando o executo netstat -an | find "8080", diz #no such file named "8080"
Pragyaditya Das 11/11

24

Se telnetnão estiver disponível, faça o download do PuTTY . É um cliente Telnet, SSH etc. muito superior e será útil em muitas situações, não apenas nesta, especialmente se você estiver administrando um servidor.


Sim, mas não para colar o código Forth, digamos, com a AmForth (a menos que você use PuTTY em combinação com Edit Overflow ).
Peter Mortensen


12

Use isso se desejar ver todas as portas usadas e de escuta em um servidor Windows:

netstat -an |find /i "listening"

Veja todas as portas abertas, de escuta e estabelecidas:

netstat -a




1

Aqui está o que funcionou para mim:

  • Abra um prompt de comando
  • Tipo telnet
  • Microsoft Telnet> abra <nome do host ou endereço IP> <espaço> <porta>

Ele confirmará se a porta está aberta.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.