Estou tentando configurar o openssh-server, mas estou tendo alguns problemas de conexão. Alterei a porta para algo fora do padrão (57757) e configurei meu roteador para encaminhar para essa porta. Na minha LAN, sou capaz de fazer ssh na minha máquina usando a porta 57757, mas não posso fazê-lo na WAN.
Se estiver fora da LAN e tentar acessar minha máquina por uma porta incorreta, recebo imediatamente a mensagem "conexão recusada". No entanto, com a porta correta, ele simplesmente trava e depois atinge o tempo limite.
O que posso tentar depurar o problema? Eu tentei um traceroute, mas não me disse nada de útil.
EDIT: Percebi que meu problema era que meu roteador não suportava acessá-lo internamente por WAN IP. Ssh fora para um servidor diferente e de volta e funcionou bem.
sudo apt-get purge openssh-server
seguida, reinstale-o (para nos livrarmos de qualquer coisa que possa ter acontecido com a configuração) e reconfigure seu roteador para encaminhar 22-> 22.Respostas:
Normalmente, isso significa que você encaminhou a porta para o endereço IP errado na LAN.
Seu roteador NAT recebe tráfego de entrada na porta 57757 e o envia para um endereço IP e uma porta específicos na LAN.
Por padrão, o Ubuntu não filtra as tentativas de conexão recebidas com um firewall. Portanto, a menos que você tenha alterado as configurações de firewall no Ubuntu, uma tentativa de abrir uma conexão com qualquer porta TCP, de 1 a 65535, irá:
Se as portas fossem filtradas por um firewall, você obteria o que está vendo - sem resposta a uma tentativa de conexão. Mas:
ufw
,iptables
), nenhuma porta será filtrada eQuando você encaminha uma porta para uma máquina inexistente com um roteador NAT, ela envia o tráfego recebido nessa porta para a máquina inexistente, ou seja, a envia para um buraco negro ; é efetivamente descartado.
Isso causa exatamente a situação que você descreveu. Portanto, você provavelmente pode corrigir isso, certificando-se de que a porta esteja sendo encaminhada para o endereço IP correto na LAN.
Se isso não acontecer, o problema ...
... então você precisará solucionar alguns problemas.
A porta especificada para o lado da LAN está correta? Ou seja, supondo que você não tenha alterado a configuração do servidor SSH, a porta 57757 no lado WAN está configurada para encaminhar para a porta 22 no servidor OpenSSH? (Você pode verificar isso novamente.)
Talvez haja algum problema com a porta específica que você escolheu (57757). Tente um diferente e veja se isso funciona melhor.
(Caso contrário, e você segue estas instruções, altere-o novamente ou substitua "57757" abaixo pelo novo número.)
Tente reiniciar o servidor OpenSSH. Isso pode ajudar se houver um problema de rede. Se isso não ajudar, tente reiniciar o roteador e o modem a cabo / DSL / ISDN também.
Se, por algum motivo, você não puder reiniciar os três dispositivos, recomendo reiniciar o que puder. Se você não pode reiniciar o serviço OpenSSH, pelo menos você pode reiniciar o serviço e (com maior probabilidade de corrigir isso) derrubar a interface e trazê-la novamente.
Para reiniciar o servidor OpenSSH:
Para desativar a interface de rede, primeiro descubra em que interface está:
Normalmente, para uma máquina com uma única placa Ethernet e / ou uma única placa sem fio, a Ethernet é
eth0
e a conexão sem fiowlan0
.Se a conexão Ethernet com fio é o que você deseja desativar e reiniciar, execute:
Então corra:
Como alternativa, você pode executar:
Seguido por:
Se a máquina estiver usando o NetworkManager para gerenciar a interface na qual o servidor OpenSSH está sendo executado, ainda recomendo tentar as maneiras acima, mas você também pode tentar desconectar e reconectar-se no NetworkManager.
Para uma conexão Ethernet, tente também desconectar o cabo e conectá-lo novamente. Para uma conexão sem fio, tente desligá-lo com a chave de hardware (se houver) e ligue-o novamente.
Algo estranho está acontecendo aqui e nada disso leva muito tempo - vale a pena ser minucioso antes de executar mais etapas de solução de problemas meticulosas.
Como você está tentando acessá-lo pelo lado da WAN? Se você estiver usando uma máquina na LAN para fazer isso (basta conectar-se da LAN ao WAN IP do seu roteador), isso é suportado apenas em alguns roteadores. Afinal, o trabalho de um roteador é rotear o tráfego entre os lados da WAN e da LAN, não para rotear o tráfego de um lado para o outro. O suporte para conectar-se às portas encaminhadas no IP da WAN de dentro da LAN é realmente a exceção e não a regra, embora muitos roteadores de casa / escritório possuam esse recurso.
Portanto, se você não estiver testando a porta para frente de um host no lado da WAN, faça isso. Suas opções para isso são:
Conecte-se do lado da WAN. Isso funciona se você tiver acesso a uma máquina lá, por exemplo, acesso SSH a uma máquina remota na escola, no trabalho, na casa de um amigo ou similar.
Conecte a máquina de teste entre o roteador e o que fornecer sua conexão com a Internet. Se você possui um modem a cabo / DSL / ISDN com uma porta Ethernet e seu roteador está conectado a isso, é possível conectar um switch ao modem e conectá-lo ao switch. Conecte um computador ao switch. Primeiro, veja se essa máquina apenas obtém acesso à Internet - atualmente, muitos ISPs fornecem dois ou mais endereços IP separados. Caso contrário , vá para a página de configuração do roteador e verifique sua máscara de sub-rede WAN IP e WAN e atribua estaticamente um endereço IP à máquina conectada ao switch que está dentro da mesma sub-rede.
Este método tem algumas desvantagens. É uma dor! Além disso, é teoricamente possível para um ISP configurar sua rede incorretamente para que a máquina de teste conectada ao switch possa acessar a Internet. (A menos que seja a intenção do seu ISP permitir que você se conecte com mais de um IP WAN ese você tiver escolhido um IP da WAN para a máquina de teste que seu ISP lhe atribuiu, o tráfego entre ele e um host WAN verdadeiro deve ser bloqueado / eliminado pelo ISP. Mas alguns provedores de serviços de Internet têm práticas estranhas, então quem sabe?) Se isso acontecer, provavelmente não causará problemas sérios a ninguém (e mesmo se ocorrer, você só o conectará por alguns minutos). No entanto, isso pode ser visto como uma tentativa de obter acesso adicional além dos limites da sua assinatura e, o que é mais importante, se outro usuário tiver o mesmo IP, ele poderá interferir na conexão. Portanto, se você quiser tentar esse método, não tente acessar a Internet a partir da máquina de teste, pare imediatamente se achar que a máquina pode acessar a Internet e não tente fazer isso se for proibido ou desaconselhado pelo seu ISP. (E não use isso se o lado WAN do seu roteador for uma LAN do escritório, sem consultar o administrador da rede primeiro. Esse não é um ISP e não há suposição de que os recursos sejam provisionados para impedir o acesso indesejado.)
Há uma variação dessa técnica que às vezes é mais apropriada. Seu roteador provavelmente obtém suas informações de conexão - endereço IP, máscara de sub-rede, o endereço IP do gateway (roteador) na WAN que ele usa quando não sabe para onde enviar algo e informações sobre os servidores DNS - do seu computador . ISP, via DHCP, através do modem a cabo / DSL / ISDN. É por isso que você precisa conectar o roteador ao modem para fornecer a configuração necessária para tornar significativos os resultados dos testes no lado da WAN. Mas o roteador normalmente lembrará essas informações, desde que estejam realmente conectadas a uma rede no lado da WAN. Assim, você pode conectar o roteador, modem e máquina de teste, mas rapidamente, eantes de fazer qualquer coisa com a máquina de teste, além de verificar se o switch a vê como conectada , desconecte o modem.
Use um serviço gratuito na Internet para testar suas portas. Como a inserção de uma máquina de teste entre a interface WAN do roteador e a Internet (acima) está altamente envolvida - e mostrará uma porta tão acessível mesmo que seja inacessível devido ao bloqueio pelo seu ISP (o que também é verdade na conexão com o WAN IP do roteador do lado da LAN) - geralmente é melhor usar um serviço de verificação de porta baseado na Web.
Existem muitos serviços de verificação de porta. (Alguns ostentam a frase "verifique seu firewall" com a idéia de que a maioria das pessoas está tentando bloquear, em vez de facilitar o acesso.) Essa é uma delas. Se você optar por usar esse, clique em Continuar , digite 57757 na caixa de texto e clique em Usar Sonda de Porta Personalizada Especificada . Para fins de execução de um servidor, você deseja que ele seja "aberto". "Fechado" significa que a porta está acessível, mas o servidor não está em execução (e, portanto, a tentativa de conexão foi rejeitada). "Discrição" significa que a porta estava inacessível - é como se nenhuma máquina estivesse localizada lá (ou como se a porta fosse encaminhada para onde não há máquina).
OK, então você determinou que realmente não é acessível pela Internet. Potencialmente, você pode digitalizá-lo (idealmente do lado da WAN) para obter detalhes, embora muitas vezes isso não forneça informações úteis.
Se você quiser fazer isso, no lado da WAN, você pode executar:
Se a porta for mostrada como filtrada, isso confirma que os pacotes enviados para lá provavelmente não vão a lugar nenhum (ou são bloqueados / descartados ao longo do caminho).
Vale a pena verificar se o problema está surgindo porque a porta exposta à WAN é diferente da porta em que o servidor está realmente ouvindo. A porta de encaminhamento 55757 na WAN para a porta 22 na máquina da LAN deve dar certo, mas talvez em algum lugar (servidor, cliente) algo esteja assumindo que o número da porta é o mesmo da perspectiva do servidor e do cliente.
Presumivelmente, você não pode encaminhar a porta 22 através do roteador. Talvez o seu ISP bloqueie essa porta. Mas se você pode fazer isso, faça isso!
Caso contrário, você pode fazer o servidor OpenSSH realmente escutar na porta 57757.
Para fazer isso, faça backup do arquivo de configuração do servidor:
Depois edite-o:
Ou use um editor de texto do console se a máquina não tiver uma GUI:
Perto da parte superior do arquivo, este bloco de texto aparece:
Apenas mude a
Port 22
linha no topo, para dizer emPort 57757
vez disso.Você pode adicionar uma porta em vez de alterá-la. Eu recomendo testar com a configuração eficaz mais simples, no entanto.
Veja
man sshd_config
para mais detalhes sobre a configuração do servidor OpenSSH.Salve o arquivo, feche o editor de texto e reinicie o servidor SSH com:
Agora mude a porta para frente no roteador para que a porta 57757 avance para a porta 57757 (não 22) no servidor OpenSSH e verifique se é acessível a partir da Internet.
Se ainda não estiver funcionando, verifique se o firewall do Ubuntu está realmente bloqueando o tráfego originado fora da LAN.
(Isso é improvável se você não tiver configurado dessa maneira, mas se todas as suas configurações estiverem corretas e nenhuma das etapas acima revelou nada sobre o problema, vale a pena conferir.)
Corre:
Por padrão, no Ubuntu, a saída se parece com:
Essa é uma política permissiva simples, essencialmente equivalente a não executar um firewall. (De fato, se o módulo do firewall netfilter não fosse compilado no seu kernel, seu sistema se comportaria da mesma maneira que nas configurações acima, embora o
iptables
comando, que consultanetfilter
as configurações, não funcione, é claro).Se sua configuração não for assim, leia
man iptables
para descobrir o que eles estão fazendo e / ou edite sua pergunta (ou, se você é uma pessoa diferente com um problema semelhante ao ler isso, poste uma nova pergunta) para incluir eles. Observe que, potencialmente, suasiptables
regras podem divulgar informações confidenciais sobre sua configuração. Na prática, esse geralmente não é o caso - com a possível exceção de regras sobre hosts específicos bloqueados ou se sua configuração é muito ruim / insegura - geralmente a utilidade dessas informações para um invasor, especialmente para uma máquina ligada uma LAN em casa / escritório atrás de um roteador NAT , é mínima.fonte
Como ele funciona de dentro da sua LAN, sua configuração do servidor parece estar correta. Você deve dizer ao roteador para encaminhar da porta que deseja usar externamente para a porta 57757 em sua máquina .
A
traceroute
não será útil neste caso.fonte