Errore di connessione SSH: nessuna route verso l'host


34

Esistono tre macchine in questo scenario:

  • Desktop A: user@1.23.xx
  • Laptop A: user@1.23.yy
  • Macchina B: user@192.168.zz

Tutte le macchine hanno Ubuntu 11.04 (il desktop A è a 64 bit) e hanno sia openssh-server che openssh-client.

Ora quando provo a connettere il Desktop A al Laptop A o viceversa, ssh user@1.23.y.yricevo un errore come

port 22: No route to host

in entrambi i casi.

Possiedo entrambe le macchine, ora se provo gli stessi comandi dalla macchina del mio amico, cioè tramite Desktop B, posso accedere sia al mio laptop che al desktop. Ma se provo ad accedere al Desktop B dal mio laptop o dal desktop ottengo

port 22: Connection timed out

Ho anche provato a cambiare la porta ssh n. in ssh_configarchivio ma nessun successo.

Nota : "Laptop A" utilizza la connessione WiFi mentre "Machine A" utilizza la connessione Ethernet e "Machine B" si trova su una rete completamente diversa.

@Lekensteyn Eccolo ->

Laptop A && Desktop A -> Router / Nano_Rcvr forniti dall'ISP. Quindi a un router sono collegate due macchine a cui è possibile accedere contemporaneamente. ecco il mio output ifconfig per entrambe le macchine: - 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)

Desktop

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 

Uscita di 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 

Uscita di 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

Correggi tali indirizzi IP. 1.23.xx è un indirizzo IP pubblico? In caso contrario, utilizzare 10.xxx, 192.168.xx o 172.16.xx È possibile eseguire il ping delle altre macchine? ping 192.168.x.x
Lekensteyn,

Sembra strano ma è un indirizzo IP pubblico se vuoi posso darti un output 'ifconfig'. No, non posso eseguire il ping di entrambe le mie macchine, dice "Destination Host Unrechable" Anche se posso eseguire il ping della macchina del mio amico
Nihar Sawant,

1
Potresti disegnare la tua configurazione di rete? L'arte ASCII andrà bene. È necessario includere le macchine, Internet e i router / modem (domestici) coinvolti.
Lekensteyn,

2
Sono d'accordo con @Lekensteyn. Questi problemi sono più comunemente problemi NAT / forwarding. Spiega la struttura della tua rete e probabilmente potremo aiutarti.
Oli

@Lekensteyn controlla il mio post aggiornato
Nihar Sawant,

Risposte:


18

I percorsi sembrano a posto. Presumo che quegli indirizzi IP siano privati ​​(LAN) e non accessibili al pubblico.

Dato che sei connesso in diversi modi alla rete (wifi / cablato), è molto probabile che il tuo router abbia reti cablate / wireless separate. Prova a collegarli entrambi su una connessione cablata (o wireless). Un'altra possibilità è che un firewall sulle macchine Ubuntu stia bloccando le connessioni.

In caso contrario, configurare il router per utilizzare la stessa rete (sottorete) per le connessioni wireless e cablate. Assicurarsi inoltre che il router non blocchi la comunicazione client-client.

Il tuo router probabilmente sta rilasciando tutti i pacchetti non richiesti, ecco perché il tuo amico riceve un messaggio di "timeout della connessione" sul tuo indirizzo IP pubblico. Configurare il port forwarding NAT in modo che l'indirizzo IP pubblico + la combinazione di porte vengano inoltrati al proprio indirizzo LAN.

Esempio di rete:

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

Sul router A , impostare l'inoltro 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 hai un firewall ( ufw, iptables, ...) sulle macchine fissati, consentire il traffico in ingresso alla porta 22 (Desktop A) e la porta 2222 (Laptop A).

Ora è possibile accedere al desktop utilizzando SSH con:

ssh user@198.51.100.1 -p 22

Ora è possibile accedere al laptop utilizzando SSH con:

ssh user@198.51.100.1 -p 2222

Se vuoi accedere alla tua macchina amici, applica queste istruzioni alla sua macchina + router.


3

ho avuto un problema simile. Una macchina su filo una wireless. Ho trovato una casella nel mio router oltre a "ips separati per lan e wlan" e l'ho spuntata. Ora posso accedere al computer wireles. Prima ho ricevuto il messaggio di errore "Nessuna route per l'host".


1

Selezionare la casella di controllo ssh durante l'installazione di RHEL. Non l'ho verificato e ho causato lo stesso problema. Si prega di controllare quel parametro


1

Ho avuto lo stesso problema ora su un vps, ed è completamente strano, non ho mai visto nulla di simile.

Sono un amministratore di server esperto e questo tipo di errore è normalmente ben definito.

Nessuna route verso l'host significa che il server non sa come instradare il pacchetto (tabella di routing, tuttavia non ho mai visto che si verifica solo su un protocollo e non su un altro).

Nel mio caso.

Nessuna connessione Internet NAT. Nessun IPTABLES Il ping funziona. Posso collegarmi a entrambi i lati dell'IP rotto. L'IP rotto dice "nessuna route verso l'host" su qualsiasi porta tcp.

Ciò suggerisce che qualcosa nel mezzo sta restituendo il codice di errore o un bug nel sistema operativo con la tabella di routing.

Nota che l'errore è istantaneo, non un ritardo, il che significa che il rifiuto è locale. Ma questo è tutto ciò che posso diagnosticare.

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

0

Stranamente otterrei questo errore anche dopo aver eseguito correttamente SSH tra il mio PC e Raspberry Pi. Ciò che lo risolve per me è spegnere e riaccendere il wifi (sia client che host), riavviare il terminale e utilizzare nuovi indirizzi IP.


0

Nel mio caso c'era una rete Docker sullo stesso CIDR della mia VPN.

Ho usato il seguente comando per capire quale rete, e poi l'ho rimosso:

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

Dopodiché ha funzionato bene.


-3

Se hai modificato / sostituito il disco rigido del tuo sistema, prova a rimuovere la chiave host dal file .ssh / known_hosts, quindi prova a connetterti di nuovo.


1
-1. Ciò non ha assolutamente nulla a che fare con entrambi gli errori di connessione, come indicato nella domanda ("Nessuna route verso l'host", "Connessione scaduta").
gertvdijk,

Hmm, lo so ma a volte la rimozione della chiave host e l'aggiunta di nuovo funziona.
Ratiranjan Kar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.