Error de conexión SSH: no hay ruta al host

34

Hay tres máquinas en este escenario:

Todas las máquinas tienen Ubuntu 11.04 (el escritorio A es de 64 bits) y tienen tanto openssh-server como openssh-client.

Ahora, cuando intento conectar el escritorio A al portátil A o viceversa ssh [email protected], aparece un error como

port 22: No route to host

en ambos casos.

Soy propietario de ambas máquinas, ahora si intento los mismos comandos desde la máquina de mi amigo, es decir, a través del Escritorio B, puedo acceder tanto a mi computadora portátil como a mi escritorio. Pero si intento acceder al escritorio B desde mi computadora portátil o desde el escritorio, obtengo

port 22: Connection timed out

Incluso intenté cambiar el puerto ssh no. en ssh_configarchivo pero sin éxito.

Nota : que 'Laptop A' usa conexión WiFi mientras que 'Máquina A' usa Conexión Ethernet y 'Máquina B' está en una red completamente diferente.

@Lekensteyn Aquí está ->

Laptop A && Desktop A -> Router / Nano_Rcvr que me proporcionó ISP. Entonces, a un enrutador, se conectan dos máquinas a las que se puede acceder al mismo tiempo. Aquí está mi salida ifconfig para ambas 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)

Escritorio

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 

Salida 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 

Salida 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
fuente
Por favor corrija esas direcciones IP. ¿Es 1.23.xx una dirección IP pública? Si no es así, utilice 10.xxx, 192.168.xx o 172.16.xx ¿Puede hacer ping a las otras máquinas? ping 192.168.x.x
Lekensteyn
Suena extraño, pero es un IP Addr público si lo desea, puedo darle salida 'ifconfig'. No no puedo Ping mis dos máquinas que dice 'host de destino Unrechable' A pesar de que puede hacer ping a la máquina de mi amigo
Nihar Sawant
1
¿Podría dibujar su configuración de red? El arte ASCII estará bien. Debe incluir las máquinas, el "Internet" y los enrutadores / módems (domésticos) involucrados.
Lekensteyn
2
Estoy de acuerdo con @Lekensteyn. Estos problemas son más comúnmente problemas de NAT / reenvío. Explica tu estructura de red y probablemente podamos ayudarte.
Oli
@Lekensteyn revisa mi publicación actualizada
Nihar Sawant

Respuestas:

18

Las rutas se ven bien. Asumiré que esas direcciones IP son privadas (LAN) y no accesibles al público.

Dado que está conectado de diferentes maneras a la red (wifi / con cable), es muy probable que su enrutador haya separado las redes con cable / inalámbricas. Intente conectar ambos en una conexión por cable (o inalámbrica). Otra posibilidad es que un firewall en las máquinas Ubuntu esté bloqueando las conexiones.

De lo contrario, configure su enrutador para usar la misma red (subred) para conexiones inalámbricas y cableadas. También asegúrese de que el enrutador no bloquee la comunicación de cliente a cliente.

Es posible que su enrutador descarte todos los paquetes no solicitados, por eso su amigo recibe un mensaje de "tiempo de espera de conexión" en su dirección IP pública. Configure el reenvío de puertos NAT para que la combinación de dirección IP pública + puerto reenvíe a su dirección LAN.

Ejemplo de red:

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

En el enrutador A , configure el reenvío 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 usted tiene un servidor de seguridad ( ufw, iptables, ...) en las máquinas establecidos, permitir el tráfico entrante en el puerto 22 (Escritorio A) y el puerto 2222 (un ordenador portátil).

Ahora se puede acceder al escritorio utilizando SSH con:

ssh [email protected] -p 22

Ahora se puede acceder a la computadora portátil usando SSH con:

ssh [email protected] -p 2222

Si desea acceder a la máquina de sus amigos, aplique estas instrucciones a su máquina + enrutador.

Lekensteyn
fuente
3

Tuve un problema similar. Una máquina con cable, una inalámbrica. Encontré una casilla de verificación en mi enrutador además de "ips separados para lan y wlan" y lo marqué. Ahora puedo iniciar sesión en la computadora de Wireles. Antes de eso recibí el mensaje de error "No hay ruta al host".

smev9
fuente
1

Marque la casilla de verificación ssh mientras instala RHEL. No lo revisé y causé el mismo problema. Por favor verifique ese parámetro

Mayur Sawant
fuente
1

Tengo el mismo problema ahora en un vps, y es completamente extraño, nunca he visto algo así.

Soy un administrador de servidor experimentado y este tipo de error normalmente se corta y se seca.

Ninguna ruta al host significa que el servidor no sabe cómo enrutar el paquete (tabla de enrutamiento, sin embargo, nunca he visto que solo ocurra en un protocolo y no en otro).

En mi caso.

No hay conexión a Internet NAT. No IPTABLES Ping funciona. Puedo conectarme a los ip de cualquier lado de la ip rota. La ip rota dice "no hay ruta al host" en cualquier puerto tcp.

Esto sugiere que algo en el medio está devolviendo el código de error o un error en el sistema operativo con la tabla de enrutamiento.

Tenga en cuenta que el error es instantáneo, no un retraso, lo que significa que el rechazo es local. Pero eso es todo lo que puedo 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
fuente
0

Extrañamente obtendría este error incluso después de ejecutar con éxito SSH entre mi PC y Raspberry Pi. Lo que me soluciona es apagar y encender wifi (tanto cliente como host), reiniciar su terminal y usar nuevas direcciones IP.

Josh
fuente
0

En mi caso, había una red Docker en el mismo CIDR que mi VPN.

Usé el siguiente comando para averiguar qué red, y luego lo eliminé:

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

Después de eso funcionó bien.

M.Vanderlee
fuente
-3

Si ha cambiado / reemplazado el disco duro de su sistema en caso, intente eliminar la clave host del archivo .ssh / known_hosts y luego intente conectarse nuevamente.

Ratiranjan Kar
fuente
1
-1. Esto no tiene absolutamente nada que ver con los dos errores de conexión que figuran en la pregunta ('Sin ruta al host', 'Se agotó el tiempo de espera de la conexión').
gertvdijk
Hmm, lo sé, pero a veces eliminar la clave host y volver a sumar funciona
Ratiranjan Kar