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 [email protected]
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 robots
está meu host remoto e 99.3.26.94
meu servidor SSH local.
SSH está em execução
volt@arnold:~$ ps -A | grep sshd
5784 ? 00:00:00 sshd
Onde arnold
está 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 robots
está meu host remoto e 99.3.26.94
meu 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 [email protected]
ssh: connect to host 192.168.1.90 port 22: No route to host
arping remotehost
deve responder apenas a um endereço hw e, em seguida, verifique se hwaddress é o mesmo . Em seguida, verifique a resolução comdig remotehost
edig -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.tail -f
o 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.Respostas:
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:Diz
tcpdump
para 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 (-Q
aceitain
,out
ouinout
;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:
SYN
pacotes 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.
fonte
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:
... e funcionou perfeitamente, ou seja, recebi uma resposta de uma chamada ssh.
Então, inicie o ufw novamente:
... e adicione a regra:
Tudo funcionando bem agora.
fonte
ufw
) resolveu meu problema no Ubuntu 16.04. Eu segui as instruções de instalação do Jenkins cegamente e habiliteiufw
o processo. Após desativá-lo, o sshd está funcionando novamente.Se você, como eu, ativou o UFW (no Linux, Ubuntu no meu caso), tente o seguinte:
Isso permitirá o OpenSSH no firewall.
fonte
Apenas para outros:
Eu tive que usar a opção -P no tcpdump em vez de -Q
fonte
Na maioria das vezes, o firewall é um culpado. Faça
service iptables stop
eservice ip6tables stop
.Se a interrupção do serviço não funcionar, execute o iptable flush.
Se for uma VM, faça o mesmo no host também
fonte