Erro de conexão SSH: nenhuma rota para o host

34

Existem três máquinas neste cenário:

Todas as máquinas possuem o Ubuntu 11.04 (o Desktop A é de 64 bits) e possuem o openssh-server e o openssh-client.

Agora, quando tento conectar o Desktop A ao Laptop A ou vice-versa, ssh [email protected]recebo um erro como

port 22: No route to host

em ambos os casos.

Eu possuo as duas máquinas, agora, se eu tentar os mesmos comandos da máquina do meu amigo, ou seja, através do Desktop B, posso acessar o meu Laptop e o Desktop. Mas se eu tentar acessar o Desktop B no meu laptop ou no Desktop, recebo

port 22: Connection timed out

Eu até tentei mudar a porta ssh no. no ssh_configarquivo, mas sem sucesso.

Nota : o 'Laptop A' usa a conexão Wi-Fi, enquanto o 'Machine A' usa a conexão Ethernet e o 'Machine B' está em uma rede totalmente diferente.

@Lekensteyn Aqui está ->

Laptop A && Desktop A -> Roteador / Nano_Rcvr fornecido a mim pelo ISP. Portanto, para um roteador, duas máquinas estão conectadas e podem ser acessadas ao mesmo tempo. aqui está minha saída ifconfig para as duas máquinas: - Laptop

wlan0

      Link encap:Ethernet  HWaddr X:X:X:X:00:bc  
      inet addr:1.23.73.111  Bcast:1.23.95.255  Mask:255.255.224.0
      inet6 addr: fe80::219:e3ff:fe04:bc/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:108409 errors:0 dropped:0 overruns:0 frame:0
      TX packets:82523 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:44974080 (44.9 MB)  TX bytes:22973031 (22.9 MB)

Área de Trabalho

eth0

      Link encap:Ethernet  HWaddr X:X:X:X:c5:78  
      inet addr:1.23.68.209  Bcast:1.23.95.255  Mask:255.255.224.0
      inet6 addr: fe80::227:eff:fe04:c578/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:10380 errors:0 dropped:0 overruns:0 frame:0
      TX packets:4509 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:1790366 (1.7 MB)  TX bytes:852877 (852.8 KB)
      Interrupt:43 Base address:0x2000 

Saída de ip route show

      1.23.64.0/19 dev wlan0  proto kernel  scope link  src 1.23.73.111  metric 2 

      169.254.0.0/16 dev wlan0  scope link  metric 1000 

Saída de traceroute -n 1.23.73.111

       traceroute to 1.23.73.111 (1.23.73.111), 30 hops max, 60 byte packets
       1  1.23.68.209  3008.787 ms !H  3008.786 ms !H  3008.784 ms !H
Nihar Sawant
fonte
Corrija esses endereços IP. 1.23.xx é um endereço IP público? Caso contrário, use 10.xxx, 192.168.xx ou 172.16.xx Você pode executar ping nas outras máquinas? ping 192.168.x.x
precisa saber é o seguinte
Soa estranho, mas é um endereço IP público, se você quiser, posso fornecer saída 'ifconfig'. Não, eu não consigo executar ping nas duas máquinas, diz 'Host de destino irrecuperável' Embora eu possa executar ping na máquina de meu amigo
Nihar Sawant
1
Você poderia desenhar sua configuração de rede? A arte ASCII ficará bem. Você precisa incluir as máquinas, a "internet" e os roteadores / modems envolvidos (domésticos).
precisa saber é o seguinte
2
Eu concordo com @Lekensteyn. Esses problemas geralmente são problemas de encaminhamento / NAT. Explique sua estrutura de rede e provavelmente podemos ajudar.
Oli
@Lekensteyn verifique meu Post atualizado
Nihar Sawant

Respostas:

18

As rotas parecem boas. Suponho que esses endereços IP sejam privados (LAN) e não sejam acessíveis ao público.

Como você está conectado de maneiras diferentes à rede (Wi-Fi / com fio), é muito provável que seu roteador tenha separado redes com fio / sem fio. Tente conectar os dois em uma conexão com fio (ou sem fio). Outra possibilidade é que um firewall nas máquinas Ubuntu esteja bloqueando as conexões.

Caso contrário, configure seu roteador para usar a mesma rede (sub-rede) para conexões sem fio e com fio. Verifique também se o roteador não bloqueia a comunicação cliente a cliente.

Seu roteador está possivelmente descartando todos os pacotes não solicitados; é por isso que seu amigo recebe uma mensagem de "tempo limite de conexão esgotado" no seu endereço IP público. Configure o encaminhamento da porta NAT para que a combinação de endereço IP público + porta seja encaminhada para o seu endereço LAN.

Rede de exemplo:

YOUR NETWORK (A)
    Router A (public address: 198.51.100.1)
    Desktop A - 10.0.0.2
    Laptop  A - 10.0.0.3

YOUR FRIENDS NETWORK (B)
    Router B (public address: 203.0.113.1)
    Machine B - 192.168.0.2

No roteador A , configure o encaminhamento NAT:

To make your desktop accessible:
  forward the public port 22 to 10.0.0.2
To make your laptop accessible:
  forward the public port 2222 to 10.0.0.3

Se você possui um firewall (ufw , iptables...) nas máquinas estabelecidas, permitir o tráfego de entrada para a porta 22 (Área de Trabalho A) e porta 2222 (Laptop A).

Agora, a área de trabalho pode ser acessada usando SSH com:

ssh [email protected] -p 22

Agora, o laptop pode ser acessado usando SSH com:

ssh [email protected] -p 2222

Se você deseja acessar a máquina dos seus amigos, aplique estas instruções na máquina dele + roteador.

Lekensteyn
fonte
3

Eu tive um problema parecido. Uma máquina com fio e uma sem fio. Encontrei uma caixa de seleção no meu roteador além de "ips separados para lan e wlan" e a marquei. Agora eu posso entrar no computador wireles. Antes disso, recebi a mensagem de erro "Nenhuma rota para hospedar".

smev9
fonte
1

Marque a caixa de seleção ssh ao instalar o RHEL. Não verifiquei e estava causando o mesmo problema. Por favor, verifique esse parâmetro

Mayur Sawant
fonte
1

Eu tenho o mesmo problema agora em um vps, e é completamente estranho, nunca vi nada parecido.

Eu sou um administrador experiente do servidor e esse tipo de erro normalmente é interrompido.

Nenhuma rota para o host significa que o servidor não sabe como rotear o pacote (tabela de roteamento, no entanto, eu nunca a vi ocorrer apenas em um protocolo e não em outro).

No meu caso.

Sem conexão à Internet NAT. No IPTABLES Ping funciona. Posso conectar-se aos ips de ambos os lados do ip quebrado. O ip quebrado diz "nenhuma rota para hospedar" em qualquer porta TCP.

Isso sugere que algo no meio está retornando o código de erro ou um bug no sistema operacional com a tabela de roteamento.

Observe que o erro é instantâneo, não um atraso, o que significa que a rejeição é local. Mas isso é tudo que posso diagnosticar.

root@vps1 network # telnet 83.149.xx.xx 23
Trying 83.149.xx.xx...
telnet: Unable to connect to remote host: No route to host
root@vps1 network # telnet 83.149.xx.xx 80
Trying 83.149.xx.xx...
telnet: Unable to connect to remote host: No route to host
root@vps1 network # ping 83.149.xx.xx
PING 83.149.xx.xx (83.149.xx.xx) 56(84) bytes of data.
64 bytes from 83.149.xx.xx: icmp_seq=1 ttl=56 time=8.89 ms
64 bytes from 83.149.xx.xx: icmp_seq=2 ttl=56 time=7.93 ms
ChrisC79
fonte
0

Estranhamente, eu recebia esse erro mesmo depois de executar com êxito o SSH entre o meu PC e o raspberry Pi. O que o corrige para mim é desligar e ligar o wifi (cliente e host), reiniciar o terminal e usar novos endereços IP.

Josh
fonte
0

No meu caso, havia uma rede Docker no mesmo CIDR da minha VPN.

Usei o seguinte comando para descobrir qual rede e depois a removi:

docker inspect $(docker network ls -q) | jq '.[] | {name: .Name, cidr: .IPAM.Config[0].Subnet}'

Depois disso, funcionou bem.

M.Vanderlee
fonte
-3

Se você alterou / substituiu o disco rígido do sistema, tente remover a chave do host do arquivo .ssh / known_hosts e tente conectar-se novamente.

Ratiranjan Kar
fonte
1
-1. Isso não tem absolutamente nada a ver com os dois erros de conexão, conforme indicado na pergunta ('Não há rota para o host', 'Conexão expirada').
gertvdijk
Hmm, eu sei, mas às vezes remover a chave do host e adicionar novamente funciona.
Ratiranjan Kar 31/12/14