Note: This message is a symptom of the problem you are trying to solve. Understanding the cause of the message will ultimately lead you to solving your problem.
A mensagem "Conexão recusada" tem duas causas principais:
- Nada está escutando no IP: porta à qual você está tentando se conectar.
- A porta está bloqueada por um firewall.
Nenhum processo está escutando.
Este é de longe o motivo mais comum para a mensagem. Primeiro, verifique se você está tentando se conectar ao sistema correto. Se você for então determinar se esse é o problema, no sistema remoto, execute netstat ou ss 1 eg se você está esperando que um processo esteja escutando na porta 22222
sudo netstat -tnlp | grep :22222
ou
ss -tnlp | grep :22222
Para o OSX, um comando adequado é
sudo netstat -tnlp tcp | grep '\.80 '
Se nada estiver escutando, o acima não produzirá saída. Se você vir alguma saída, confirme que é o que espera e, em seguida, consulte a seção de firewall abaixo.
Se você não tem acesso ao sistema remoto e deseja confirmar o problema antes de denunciá-lo aos administradores relevantes, você pode usar o tcpdump (wireshark ou similar).
Quando uma conexão é tentada para um IP: porta onde nada está escutando, a resposta do sistema remoto ao pacote SYN inicial é um pacote com os sinalizadores RST, ACK set. Isso fecha a conexão e faz com que a mensagem de recusa de conexão, por exemplo,
$ sudo tcpdump -n host 192.0.2.1 and port 22222
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp14s0, link-type EN10MB (Ethernet), capture size 262144 bytes
12:31:27.013976 IP 192.0.2.2.34390 > 192.0.2.1.22222: Flags [S], seq 1207858804, win 29200, options [mss 1460,sackOK,TS val 15306344 ecr 0,nop,wscale 7], length 0
12:31:27.020162 IP 192.0.2.1.22222 > 192.0.2.2.34390: Flags [R.], seq 0, ack 1207858805, win 0, length 0
Observe que o tcpdump usa um . para representar o ACK bandeira.
A porta está bloqueada por um firewall
Se a porta estiver bloqueada por um firewall e o firewall tiver sido configurado para responder com icmp-port-unreachable
, isso também causará uma mensagem de conexão recusada. Mais uma vez você pode ver isso com o tcpdump (ou similar)
$ sudo tcpdump -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp14s0, link-type EN10MB (Ethernet), capture size 262144 bytes 13:03:24.149897 IP 192.0.2.1 > 192.0.2.2: ICMP 192.0.2.1 tcp port 22222 unreachable, length 68
Observe que isso também nos diz onde está o firewall de bloqueio.
Então agora você sabe o que está causando a mensagem de conexão recusada. Entre em contato com o administrador do firewall ou investigue o motivo pelo qual o processo não está sendo ouvido.
1 Outras ferramentas provavelmente estão disponíveis.