SSH-Verbindungsfehler: Keine Route zum Host


34

In diesem Szenario gibt es drei Computer:

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

Alle Maschinen haben Ubuntu 11.04 (Desktop A ist eine 64-Bit-Version) und haben sowohl einen openssh-Server als auch einen openssh-Client.

Wenn ich nun versuche, Desktop A mit Laptop A zu verbinden oder umgekehrt, ssh user@1.23.y.yerhalte ich eine Fehlermeldung als

port 22: No route to host

in beiden Fällen.

Ich besitze beide Computer. Wenn ich jetzt dieselben Befehle auf dem Computer meines Freundes ausprobiere, z. B. über Desktop B, kann ich sowohl auf meinen Laptop als auch auf den Desktop zugreifen. Aber wenn ich versuche, von meinem Laptop oder über den Desktop auf Desktop B zuzugreifen, erhalte ich

port 22: Connection timed out

Ich habe sogar versucht, die SSH-Portnummer zu ändern. in ssh_configDatei aber kein Erfolg.

Hinweis : "Laptop A" verwendet eine WiFi-Verbindung, während "Maschine A" eine Ethernet-Verbindung verwendet und sich "Maschine B" in einem völlig anderen Netzwerk befindet.

@Lekensteyn Hier ist es ->

Laptop A && Desktop A -> Router / Nano_Rcvr von ISP zur Verfügung gestellt. An einen Router sind also zwei Maschinen angeschlossen, auf die gleichzeitig zugegriffen werden kann. Hier ist meine Ausgabe von ifconfig für beide Maschinen: - 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 

Ausgabe von 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 

Ausgabe von 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

Bitte korrigieren Sie diese IP-Adressen. Ist 1.23.xx eine öffentliche IP-Adresse? Wenn nicht, verwenden Sie bitte 10.xxx, 192.168.xx oder 172.16.xx. Können Sie die anderen Maschinen anpingen? ping 192.168.x.x
Lekensteyn

Klingt komisch, aber es ist eine öffentliche IP-Adresse, wenn Sie möchten, kann ich Ihnen "ifconfig" -Ausgabe geben. Nein, ich kann meine beiden Maschinen nicht anpingen, da steht "Destination Host Unrechable". Obwohl ich die Maschine meines Freundes
anpingen

1
Könnten Sie Ihr Netzwerk-Setup zeichnen? ASCII-Kunst wird in Ordnung sein. Sie müssen die Maschinen, das "Internet" und die beteiligten (Heim-) Router / Modems einbeziehen.
Lekensteyn

2
Ich bin mit @Lekensteyn einverstanden. Diese Probleme sind am häufigsten NAT / Weiterleitungsprobleme. Erläutern Sie Ihre Netzwerkstruktur und wir können Ihnen wahrscheinlich helfen.
Oli

@Lekensteyn check out meine aktualisierte Post
Nihar Sawant

Antworten:


18

Die Routen sehen gut aus. Ich gehe davon aus, dass diese IP-Adressen privat (LAN) und nicht öffentlich zugänglich sind.

Da Sie auf unterschiedliche Art und Weise mit dem Netzwerk verbunden sind (WLAN / WLAN), hat Ihr Router mit hoher Wahrscheinlichkeit Kabel- / WLAN-Netzwerke getrennt. Versuchen Sie, beide über eine kabelgebundene (oder kabellose) Verbindung miteinander zu verbinden. Eine andere Möglichkeit ist, dass eine Firewall auf den Ubuntu-Rechnern Verbindungen blockiert.

Andernfalls konfigurieren Sie Ihren Router so, dass für drahtlose und kabelgebundene Verbindungen dasselbe Netzwerk (Subnetz) verwendet wird. Stellen Sie außerdem sicher, dass der Router die Client-zu-Client-Kommunikation nicht blockiert.

Möglicherweise verwirft Ihr Router alle unerwünschten Pakete. Aus diesem Grund erhält Ihr Freund eine Meldung, dass die Zeit für die Verbindung abgelaufen ist, auf Ihrer öffentlichen IP-Adresse. Konfigurieren Sie die NAT-Portweiterleitung so, dass die Kombination aus öffentlicher IP-Adresse und Port an Ihre LAN-Adresse weitergeleitet wird.

Beispiel Netzwerk:

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

Richten Sie auf Router A die NAT-Weiterleitung ein:

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

Wenn Sie eine Firewall haben ( ufw, iptables, ...) auf den Maschinen eingestellt, um eingehenden Datenverkehr auf Port 22 (Desktop - A) und Port 2222 (Laptop A).

Auf den Desktop kann jetzt mit SSH zugegriffen werden:

ssh user@198.51.100.1 -p 22

Auf den Laptop kann nun über SSH zugegriffen werden mit:

ssh user@198.51.100.1 -p 2222

Wenn Sie auf den Computer Ihres Freundes zugreifen möchten, wenden Sie diese Anweisungen auf seinen Computer + Router an.


3

Ich hatte ein ähnliches Problem. Eine Maschine auf Draht eine drahtlose. Ich habe in meinem Router ein Häkchen neben "separate IPS für LAN und WLAN" gefunden und abgehakt. Jetzt kann ich mich am drahtlosen Computer anmelden. Davor bekam ich die Fehlermeldung "No route to host".


1

Aktivieren Sie das Kontrollkästchen ssh, während Sie RHEL installieren. Ich habe es nicht überprüft und verursachte das gleiche Problem. Bitte überprüfen Sie diesen Parameter


1

Ich habe das gleiche Problem jetzt selbst auf einem VPS, und es ist völlig seltsam, so etwas noch nie gesehen.

Ich bin ein erfahrener Serveradministrator und diese Art von Fehler ist normalerweise trocken und trocken.

Keine Route zum Host bedeutet, dass der Server nicht weiß, wie das Paket weitergeleitet wird (Routing-Tabelle, ich habe jedoch noch nie gesehen, dass es nur bei einem Protokoll und nicht bei einem anderen auftritt).

In meinem Fall.

Keine NAT-Internetverbindung. Kein IPTABLES-Ping funktioniert. Ich kann mich zu beiden Seiten der defekten IP mit der IP verbinden. Die kaputte IP zeigt an, dass auf keinem TCP-Port eine Route zum Host existiert.

Dies deutet darauf hin, dass entweder etwas in der Mitte den Fehlercode zurückgibt oder dass ein Fehler im Betriebssystem mit der Routingtabelle vorliegt.

Beachten Sie, dass der Fehler sofort und nicht verzögert auftritt, was bedeutet, dass die Zurückweisung lokal erfolgt. Aber das ist alles, was ich diagnostizieren kann.

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

Ich würde seltsamerweise diesen Fehler erhalten, selbst nachdem ich SSH erfolgreich zwischen meinem PC und Himbeer-Pi ausgeführt habe. Was es für mich behebt, ist das Ein- und Ausschalten von WLAN (sowohl Client als auch Host), das Neustarten Ihres Terminals und die Verwendung neuer IP-Adressen.


0

In meinem Fall gab es ein Docker-Netzwerk auf derselben CIDR wie mein VPN.

Ich habe den folgenden Befehl verwendet, um herauszufinden, welches Netzwerk ich verwendet habe, und habe es dann entfernt:

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

Danach hat es gut funktioniert.


-3

Wenn Sie das Festplattenlaufwerk Ihres Systems geändert / ausgetauscht haben, entfernen Sie den Hostschlüssel aus der Datei .ssh / known_hosts und versuchen Sie erneut, eine Verbindung herzustellen.


1
-1. Dies hat absolut nichts mit den beiden in der Frage angegebenen Verbindungsfehlern zu tun ('Keine Route zum Host', 'Zeitüberschreitung der Verbindung').
Gertvdijk

Hmm, ich weiß, aber manchmal funktioniert es, den Hostkey zu entfernen und erneut zu addieren.
Ratiranjan Kar
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.