SSH 연결 오류 : 호스트에 대한 경로가 없습니다


34

이 시나리오에는 세 가지 머신이 있습니다.

  • 데스크톱 A : user@1.23.xx
  • 노트북 A : user@1.23.yy
  • 머신 B : user@192.168.zz

모든 컴퓨터에는 Ubuntu 11.04 (데스크탑 A는 64 비트 컴퓨터)가 있으며 openssh-server와 openssh-client가 있습니다.

이제 데스크톱 A를 랩톱 A에 연결하거나 그 반대로 연결하려고 ssh user@1.23.y.y하면 오류가 발생합니다.

port 22: No route to host

두 경우 모두.

두 컴퓨터를 모두 소유하고 있습니다. 이제 친구 컴퓨터에서 (예 : 데스크톱 B를 통해) 동일한 명령을 시도하면 랩톱과 데스크톱 모두에 액세스 할 수 있습니다. 그러나 랩톱이나 데스크탑에서 데스크탑 B에 액세스하려고하면

port 22: Connection timed out

ssh 포트 번호를 변경하려고 시도했습니다. 에서 ssh_config파일하지만 성공.

참고 : '랩탑 A'는 WiFi 연결을 사용하고 '기계 A'는 이더넷 연결을 사용하고 '기계 B'는 완전히 다른 네트워크에 있습니다.

@Lekensteyn 여기 있습니다->

노트북 A && 데스크탑 A-> 라우터 / Nano_Rcvr ISP가 제공 한 것입니다. 따라서 하나의 라우터에 두 대의 컴퓨터가 연결되어 동시에 액세스 할 수 있습니다. 여기에는 두 시스템에 대한 내 ifconfig를 출력은 다음과 같습니다 - 노트북

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)

데스크탑

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 

출력 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 

출력 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

해당 IP 주소를 수정하십시오. 1.23.xx는 공개 IP 주소입니까? 그렇지 않은 경우 10.xxx, 192.168.xx 또는 172.16.xx를 사용하십시오. 다른 시스템을 ping 할 수 있습니까? ping 192.168.x.x
Lekensteyn

이상하게 들리지만 u ififconfig 출력을 줄 수 있다면 공개 IP 주소입니다. 아니요 두 컴퓨터를 모두 핑 (Ping) 할 수 없습니다. 'Destination Host Unrechable'이라고 표시됩니다. 친구의 컴퓨터를 핑 (Ping) 할 수는 있지만
Nihar Sawant

1
네트워크 설정을 그릴 수 있습니까? ASCII 예술은 괜찮을 것입니다. 컴퓨터, "인터넷"및 관련 (홈) 라우터 / 모뎀을 포함해야합니다.
Lekensteyn

2
@Lekensteyn에 동의합니다. 이러한 문제는 가장 일반적으로 NAT / 전달 문제입니다. 네트워크 구조를 설명하면 도움이 될 수 있습니다.
Oli

@Lekensteyn 내 업데이트 된 게시물을 확인하십시오
Nihar Sawant

답변:


18

경로가 잘 보입니다. 이 IP 주소는 개인 주소 (LAN)이며 공개적으로 액세스 할 수 없다고 가정합니다.

네트워크 (Wi-Fi / 유선)에 다른 방식으로 연결되어 있기 때문에 라우터가 유선 / 무선 네트워크를 분리했을 가능성이 큽니다. 유선 또는 무선 연결로 둘 다 연결해보십시오. 또 다른 가능성은 Ubuntu 시스템의 방화벽이 연결을 차단하고 있다는 것입니다.

그렇지 않으면 무선 및 유선 연결에 동일한 네트워크 (서브넷)를 사용하도록 라우터를 구성하십시오. 또한 라우터가 클라이언트 간 통신을 차단하지 않는지 확인하십시오.

라우터가 요청하지 않은 모든 패킷을 삭제했을 가능성이 있으므로 친구가 공개 IP 주소에서 "연결 시간 초과"메시지를받습니다. 공개 IP 주소 + 포트 조합이 LAN 주소로 전달되도록 NAT 포트 전달을 구성하십시오.

네트워크 예 :

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

라우터 , 설치 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

머신 세트에 방화벽 ( ufw,, iptables...) 이있는 경우 포트 22 (데스크탑 A) 및 포트 2222 (랩탑 A)로 들어오는 트래픽을 허용하십시오.

이제 다음을 사용하여 SSH를 사용하여 데스크탑에 액세스 할 수 있습니다.

ssh user@198.51.100.1 -p 22

이제 다음을 사용하여 SSH를 사용하여 랩톱에 액세스 할 수 있습니다.

ssh user@198.51.100.1 -p 2222

친구 컴퓨터에 액세스하려면이 지침을 컴퓨터 + 라우터에 적용하십시오.


3

나는 비슷한 문제가 있었다. 유선 하나의 무선 장치 하나. 내 라우터에서 "lan 및 wlan의 별도 ips"외에도 틱 박스를 찾아 틱했습니다. 이제 wireles 컴퓨터에 로그인 할 수 있습니다. 그 전에 "No route to host"라는 오류 메시지가 나타납니다.


1

RHEL을 설치하는 동안 ssh 확인란을 선택하십시오. 확인하지 않았으며 동일한 문제가 발생했습니다. 해당 매개 변수를 확인하십시오


1

나는 지금 vps에서 똑같은 문제를 겪었고 완전히 이상해, 결코 그런 것을 보지 못했습니다.

나는 경험이 풍부한 서버 관리자이며 이런 종류의 오류는 일반적으로 잘리고 건조합니다.

호스트에 대한 경로 없음은 서버가 패킷을 라우팅하는 방법을 모른다는 것을 의미합니다 (라우팅 테이블, 그러나 한 프로토콜에서만 발생하는 프로토콜은 다른 프로토콜에서는 발생하지 않음).

나의 경우에는.

NAT 인터넷 연결이 없습니다. IPTABLES Ping이 작동하지 않습니다. 깨진 IP의 양쪽에 IP를 연결할 수 있습니다. 손상된 IP는 모든 tcp 포트에서 "호스트에 대한 경로 없음"을 나타냅니다.

이것은 중간에 무언가 오류 코드를 반환하거나 라우팅 테이블이있는 OS의 버그를 나타냅니다.

오류는 즉각적이며 거부가 로컬임을 의미하는 지연이 아닙니다. 하지만 그게 내가 진단 할 수있는 전부입니다.

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

내 PC와 raspberry Pi 사이에서 SSH를 성공적으로 실행 한 후에도 이상하게이 오류가 발생합니다. 나를 위해 고치는 것은 와이파이를 끄고 켜고 (클라이언트와 호스트 모두) 터미널을 다시 시작하고 새로운 IP 주소를 사용하는 것입니다.


0

제 경우에는 VPN과 동일한 CIDR에 Docker 네트워크가있었습니다.

다음 명령을 사용하여 어떤 네트워크를 알아 낸 다음 제거했습니다.

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

그 후 그것은 잘 작동했습니다.


-3

시스템 하드 드라이브 인 케이스를 변경 / 교체 한 경우 .ssh / known_hosts 파일에서 호스트 키를 제거한 다음 다시 연결하십시오.


1
-1. 이것은 질문에 주어진 두 연결 오류 ( '호스트로 경로 없음', '연결 시간 초과')와 전혀 관련이 없습니다.
gertvdijk 2014

흠, 나는 알고 있지만 때로는 호스트 키를 제거하고 다시 합산해도 효과가 있습니다.
Ratiranjan Kar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.