Servidor SSH não responde a solicitações de conexão


14

Estou tentando configurar um servidor SSH na minha máquina local usando o OpenSSH. Quando tento fazer o SSH de um host remoto para o meu servidor SSH local, o servidor SSH não responde e a solicitação expira. Tenho certeza de que há uma correção realmente óbvia para isso que estou simplesmente ignorando.

Aqui está o que acontece quando tento fazer o SSH de um host remoto:

yoshimi@robots:/$ ssh -vv volt@99.3.26.94
OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8 Jan 2015
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 99.3.26.94 [99.3.26.94] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: connect to address 99.3.26.94 port 22: Connection timed out
ssh: connect to host 99.3.26.94 port 22: Connection timed out

Onde robotsestá meu host remoto e 99.3.26.94meu servidor SSH local.

SSH está em execução

volt@arnold:~$ ps -A | grep sshd
 5784 ?        00:00:00 sshd

Onde arnoldestá o meu servidor SSH local.

O encaminhamento de porta está configurado no roteador

Eu tenho meu roteador doméstico configurado para encaminhar as portas 80 e 22 para o meu servidor SSH. Curiosamente, a porta 80 funcionou sem problemas - vai direto para o diretório da web Apache. Porta 22 - nem tanto.

NMap diz que está filtrado

yoshimi@robots:/$ nmap -p 22 99.3.26.94

Starting Nmap 6.47 ( http://nmap.org ) at 2015-06-02 14:45 EDT
Nmap scan report for 99-3-26-94.lightspeed.bcvloh.sbcglobal.net (99.3.26.94)
Host is up (0.33s latency).
PORT   STATE    SERVICE
22/tcp filtered ssh

Nmap done: 1 IP address (1 host up) scanned in 7.59 seconds

Onde robotsestá meu host remoto e 99.3.26.94meu servidor SSH local.

Não é IPTables (eu acho)

volt@arnold:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain fail2ban-ssh (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere            

... E eu não tenho nenhum outro firewall instalado - é um netinst Debian relativamente novo.

Então, então: O que mais poderia ser? Certamente parece ser uma coisa do tipo firewall para ignorar o tráfego, mas se não é o roteador, não é o iptables e não é outro firewall no servidor SSH, ... o que diabos mais existe?

Edição: solicitação de conexão de erro de rede interna

yoshimi@robots:/$ ssh volt@192.168.1.90
ssh: connect to host 192.168.1.90 port 22: No route to host

1
Você já tentou fazer o SSH usando um computador atrás do roteador (internamente)? Além disso, veja isso .
— saiarcot895

Obrigado pelo material de referência, @ saiarcot895. Além disso, consulte editar.
— Junta

Qual é o endereço IP do computador com o qual você tentou fazer o descrito acima? Você pode fazer ping?
— 111 ---

Antes de tudo, verifique se alguma coisa, se não estiver usando o endereço, arping remotehostdeve responder apenas a um endereço hw e, em seguida, verifique se hwaddress é o mesmo . Em seguida, verifique a resolução com dig remotehoste dig -x remoteip, em seguida, verifique se o host remoto não está apontando para 127.0.0.1. / etc / hosts of remote.E finalmente tente desativar o firewall e verifique se o processo ssh está em execução.
— precisa saber é

Também pode ajudar tail -fo arquivo (s) de registro para o qual o sshd apontou para a saída. Se não houver absolutamente nada nos logs, é mais provável que haja um problema entre os dois dispositivos, não no servidor ssh.
— precisa saber é o seguinte

Respostas:


18

Uma resposta muito decepcionante

Tendo deixado esse problema de lado por um dia e voltando a ele, fiquei ao mesmo tempo aliviado e perturbado (mais perturbado do que aliviado) ao descobrir que tudo estava, misteriosamente, funcionando corretamente.

Então, qual foi o problema?

Nenhuma configuração foi alterada ou ajustada - nem no roteador, nem no servidor SSH nem na máquina do cliente SSH. É bastante seguro dizer que o roteador não está lidando adequadamente com o tráfego recebido, apesar das configurações adequadas. Como o software de roteador doméstico não é realmente projetado para lidar com o encaminhamento de portas, o pobre rapaz demorou um pouco para implementar as alterações necessárias.

Mas já faz 6 horas !!

Sim cara, eu sei. Passei o dia todo tentando descobrir o que estava errado - e nunca o encontrei porque não havia nada errado. Evidentemente, pode levar 6 horas - possivelmente mais - para que as configurações do roteador entrem em vigor.

Então, como sei se esse é o meu problema?

Uma ferramenta bacana que me deparei durante essa escapada é tcpdump. Esse carinha magro cheira o tráfego para você, oferecendo informações valiosas sobre o que realmente está acontecendo. Além disso, ele tem alguns recursos de superfiltragem que permitem restringir exatamente o que você deseja procurar. Por exemplo, o comando:

tcpdump -i wlan1 port 22 -n -Q inout

Diz tcpdumppara olhar para o tráfego através da interface wlan1 ( -i'interface' =), apenas através da porta 22, ignorar a resolução de DNS nome ( -n= 'nenhuma resolução name'), e queremos ver o tráfego de entrada e de saída ( -Qaceita in, outou inout; inouté o padrão).

Ao executar esse comando no servidor SSH ao tentar conectar-se através de uma máquina remota, rapidamente fica claro onde está exatamente o problema. Existem, essencialmente, três possibilidades:

  1. Se você estiver vendo tráfego de entrada da máquina remota, mas não houver tráfego de saída do servidor local, o problema está no servidor: provavelmente há uma regra de firewall que precisa ser alterada etc.
  2. Se você está vendo tanto a entrada quanto a saída , mas sua máquina remota não está recebendo a resposta, provavelmente é o roteador: está permitindo o tráfego de entrada, mas eliminando os pacotes de saída.
  3. Se não houver tráfego , provavelmente isso também é um problema do roteador: os SYNpacotes da máquina remota estão sendo ignorados e descartados pelo roteador antes mesmo de chegarem ao servidor.

E depois que você descobrir onde está o problema, uma correção é (geralmente) trivial.


1
Molho impressionante para sua "resposta decepcionante"! Pontos de bônus pelo seu nome de usuário ... Eu estive em círculos nisso por duas máquinas na mesma rede local! Acontece que o Evil Bell Router é uma porcaria! Ele me permite conectar apenas UMA VEZ. Depois, quando tento reconectar, ele se recusa a me rotear! Eu posso até SSH da outra maneira muito bem. Bem, pelo menos uma vez. Eu me pergunto se isso não vai funcionar em poucas horas também ..
— Richard Cooke

Uau, estou puxando meu cabelo por um dia inteiro com isso - parece que eu também tenho o problema do 'Evil Bell Router'. @RichardCooke: qual foi a sua solução?
— John Doe

@ JohnDoe: roteador substituído. Um modelo Asus que está na lista de hardware aprovada pelo DD-WRT. Mais travessuras e eu instalarei o DD-WRT!
— Richard Cooke

3

Estou executando o Mint (Ubuntu).

Eu tinha feito tudo ... chave pública no formato correto, em keys_chave autorizadas, chmodding, chowning, reiniciando ssh e sshd etc. Como tudo foi documentado em todo o lugar.

Para mim, era o firewall ufw. A falta de resposta ssh me levou a isso, mas não consegui resolver nenhum problema nos dois sentidos em uma LAN.

Eu testei por:

sudo ufw service stop

... e funcionou perfeitamente, ou seja, recebi uma resposta de uma chamada ssh.

Então, inicie o ufw novamente:

sudo ufw service start

... e adicione a regra:

sudo ufw allow openssh

Tudo funcionando bem agora.


Isso ( ufw) resolveu meu problema no Ubuntu 16.04. Eu segui as instruções de instalação do Jenkins cegamente e habilitei ufwo processo. Após desativá-lo, o sshd está funcionando novamente.
— Penghe Geng

1

Se você, como eu, ativou o UFW (no Linux, Ubuntu no meu caso), tente o seguinte:

sudo ufw enable OpenSSH

Isso permitirá o OpenSSH no firewall.


1
Acabei de me trancar e me sinto extremamente estúpido. Mas era isso mesmo.
— martpie

0

Apenas para outros:

Eu tive que usar a opção -P no tcpdump em vez de -Q

tcpdump -i wlan1 port 22 -n -P inout

Eu vou votar se você identificar o nome / versão da distribuição que está usando.
— Richard Cooke

0

Na maioria das vezes, o firewall é um culpado. Faça service iptables stope service ip6tables stop.

Se a interrupção do serviço não funcionar, execute o iptable flush.

iptables --flush.

Se for uma VM, faça o mesmo no host também

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.