Erreur de connexion SSH: aucune route à héberger

34

Il y a trois machines dans ce scénario:

Toutes les machines ont Ubuntu 11.04 (le bureau A est à 64 bits) et ont à la fois openssh-server et openssh-client.

Maintenant, lorsque je tente de connecter le bureau A à l’ordinateur portable A ou vice-versa, ssh [email protected]j’obtiens une erreur.

port 22: No route to host

dans les deux cas.

Je possède les deux machines. Maintenant, si j'essaie les mêmes commandes que celles de mes amis, c'est-à-dire via le bureau B, je peux accéder à la fois à mon ordinateur portable et à mon bureau. Mais si j'essaie d'accéder à Desktop B depuis mon ordinateur portable ou par Desktop, je reçois

port 22: Connection timed out

J'ai même essayé de changer le port ssh no. en ssh_configfichier mais pas de succès.

Remarque : cet ordinateur portable utilise une connexion WiFi alors que la machine A utilise une connexion Ethernet et la machine B se trouve sur un réseau entièrement différent.

@Lekensteyn La voici ->

Ordinateur portable A && Desktop A -> Routeur / Nano_Rcvr fourni par le FAI. Ainsi, sur un routeur, deux machines sont connectées et peuvent être accédées en même temps. voici ma sortie ifconfig pour les deux machines: - Ordinateur portable

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)

Bureau

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 

Sortie 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 

Sortie 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
la source
S'il vous plaît corriger ces adresses IP. 1.23.xx est-il une adresse IP publique? Sinon, veuillez utiliser 10.xxx, 192.168.xx ou 172.16.xx Pouvez-vous envoyer une requête ping aux autres machines? ping 192.168.x.x
Lekensteyn le
Cela semble bizarre, mais c'est une adresse IP publique si vous voulez, je peux vous donner une sortie 'ifconfig'. Non, je ne peux pas cingler mes deux machines, il est écrit 'Destination Host Unrechable', bien que je puisse envoyer une commande ping à la machine de mon ami
Nihar Sawant le
1
Pourriez-vous dessiner votre configuration réseau? L'art ASCII ira bien. Vous devez inclure les machines, "Internet" et les routeurs / modems impliqués (à la maison).
Lekensteyn le
2
Je suis d'accord avec @Lekensteyn. Ces problèmes sont le plus souvent des problèmes de NAT / transmission. Expliquez votre structure de réseau et nous pouvons probablement vous aider.
Oli
@Lekensteyn consultez ma dernière mise à jour
Nihar Sawant le

Réponses:

18

Les itinéraires ont l'air bien. Je suppose que ces adresses IP sont des adresses privées (LAN) et non accessibles au public.

Étant donné que vous êtes connecté de différentes manières au réseau (wifi / filaire), il est fort probable que votre routeur dispose de réseaux câblés / sans fil séparés. Essayez de connecter les deux sur une connexion filaire (ou sans fil). Une autre possibilité est qu’un pare-feu sur les machines Ubuntu bloque les connexions.

Sinon, configurez votre routeur pour utiliser le même réseau (sous-réseau) pour les connexions sans fil et câblées. Assurez-vous également que le routeur ne bloque pas la communication client à client.

Votre routeur est peut-être en train de supprimer tous les paquets non sollicités. C'est pourquoi votre ami reçoit un message "Connexion expirée" sur votre adresse IP publique. Configurez le transfert de port NAT de sorte que la combinaison adresse IP publique + port soit transférée vers votre adresse LAN.

Exemple de réseau:

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

Sur le routeur A , configurez le transfert 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

Si vous avez un pare - feu ( ufw, iptables...) sur les machines fixées, autoriser le trafic entrant vers le port 22 (Bureau A) et le port 2222 (ordinateur portable A).

On peut maintenant accéder au bureau en utilisant SSH avec:

ssh [email protected] -p 22

L’ordinateur portable est maintenant accessible via SSH avec:

ssh [email protected] -p 2222

Si vous souhaitez accéder à la machine de vos amis, appliquez ces instructions à sa machine et à son routeur.

Lekensteyn
la source
3

J'avais un problème similaire. Une machine sur fil une sans fil. J'ai trouvé une case à cocher dans mon routeur en plus de "séparer les ips pour le réseau local et le réseau local" et je l'ai coché. Maintenant, je peux me connecter à l'ordinateur wireles. Avant cela, j'ai reçu le message d'erreur "Aucune route à héberger".

smev9
la source
1

Cochez la case ssh lors de l'installation de RHEL. Je ne l'ai pas vérifié et provoquant le même problème. Veuillez vérifier ce paramètre

Mayur Sawant
la source
1

J'ai moi-même le même problème maintenant sur un vps, et c'est complètement bizarre, je n'ai jamais rien vu de tel.

Je suis un administrateur de serveur expérimenté et ce genre d'erreur est normalement coupé et séché.

Pas de route à héberger signifie que le serveur ne sait pas comment router le paquet (table de routage, cependant je ne l’ai jamais vue se produire uniquement sur un protocole et pas sur un autre).

Dans mon cas.

Pas de connexion Internet NAT. Aucun IPTABLES Ping fonctionne Je peux me connecter à l'un des côtés de l'ip cassé. L'IP cassé dit "aucune route à héberger" sur n'importe quel port TCP.

Cela suggère que quelque chose au milieu renvoie le code d'erreur ou un bogue dans le système d'exploitation avec la table de routage.

Notez que l'erreur est instantanée et non un délai, ce qui signifie que le rejet est local. Mais c'est tout ce que je peux diagnostiquer.

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
la source
0

Je voudrais bizarrement obtenir cette erreur même après avoir exécuté SSH avec succès entre mon PC et Raspberry Pi. Pour moi, la solution consiste à activer et désactiver le wifi (client et hôte), à ​​redémarrer votre terminal et à utiliser de nouvelles adresses IP.

Josh
la source
0

Dans mon cas, il y avait un réseau Docker sur le même CIDR que mon VPN.

J'ai utilisé la commande suivante pour déterminer quel réseau, puis je l'ai supprimé:

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

Après ça a bien fonctionné.

M.Vanderlee
la source
-3

Si vous avez modifié / remplacé le disque dur de votre système, essayez de supprimer la clé hôte du fichier .ssh / known_hosts, puis essayez à nouveau de vous connecter.

Ratiranjan Kar
la source
1
-1. Cela n'a absolument rien à voir avec les deux erreurs de connexion, comme indiqué dans la question ("Aucune route à héberger", "Connexion expirée").
gertvdijk
Hmm, je sais, mais parfois, retirer la clé hôte et ajouter à nouveau fonctionne.
Ratiranjan Kar