ข้อผิดพลาดการเชื่อมต่อ SSH: ไม่มีเส้นทางไปยังโฮสต์


34

มีสามเครื่องในสถานการณ์นี้:

  • เดสก์ท็อป A: user@1.23.xx
  • แล็ปท็อป A: user@1.23.yy
  • เครื่อง B: user@192.168.zz

เครื่องทั้งหมดมี Ubuntu 11.04 (Desktop A เป็น 64 บิต) และมีทั้ง openssh-server และ openssh-client

ตอนนี้เมื่อฉันพยายามเชื่อมต่อ Desktop A กับแล็ปท็อป A หรือในทางกลับกันโดยssh user@1.23.y.yฉันได้รับข้อผิดพลาดเป็น

port 22: No route to host

ในทั้งสองกรณี

ฉันเป็นเจ้าของทั้งสองเครื่องตอนนี้ถ้าฉันลองใช้คำสั่งเดียวกันจากเครื่องของเพื่อนฉันเช่นผ่านเดสก์ท็อป B ฉันสามารถเข้าถึงทั้งแล็ปท็อปและเดสก์ท็อปได้ แต่ถ้าฉันพยายามเข้าถึง Desktop 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

ฟังดูแปลก ๆ แต่เป็นที่อยู่ IP สาธารณะถ้าคุณต้องการฉันจะให้ผลลัพธ์ 'ifconfig' ไม่ฉันไม่สามารถ Ping ทั้งสองเครื่องของฉันมันบอกว่า 'Destination Host Unrechable' แม้ว่าฉันสามารถ ping เครื่องจักรของเพื่อนฉันได้
Nihar Sawant

1
คุณวาดการตั้งค่าเครือข่ายได้ไหม ศิลปะ ASCII จะไม่เป็นไร คุณต้องรวมเครื่อง, "อินเทอร์เน็ต" และเราเตอร์ / โมเด็ม (ที่บ้าน) ที่เกี่ยวข้อง
Lekensteyn

2
ฉันเห็นด้วยกับ @Lekensteyn ปัญหาเหล่านี้ส่วนใหญ่เป็นปัญหา NAT / การส่งต่อ อธิบายโครงสร้างเครือข่ายของคุณและเราอาจช่วยได้
Oli

@Lekensteyn ตรวจสอบโพสต์ที่อัปเดตของฉัน
Nihar Sawant

คำตอบ:


18

เส้นทางดูดี ฉันจะสมมติว่าที่อยู่ IP เหล่านั้นเป็นส่วนตัว (LAN) และไม่สามารถเข้าถึงได้แบบสาธารณะ

เนื่องจากคุณเชื่อมต่อกับเครือข่าย (wifi / wired) ในแบบต่างๆเราเตอร์ของคุณจึงแยกเครือข่ายแบบใช้สาย / ไร้สายออก ลองเชื่อมต่อทั้งสองอย่างด้วยการเชื่อมต่อแบบใช้สาย (หรือไร้สาย) ความเป็นไปได้อีกอย่างก็คือไฟร์วอลล์บนเครื่อง Ubuntu กำลังบล็อกการเชื่อมต่อ

มิฉะนั้นให้กำหนดค่าเราเตอร์ของคุณให้ใช้เครือข่ายเดียวกัน (ซับเน็ต) สำหรับการเชื่อมต่อแบบไร้สายและแบบใช้สาย ตรวจสอบให้แน่ใจด้วยว่าเราเตอร์ไม่ได้ปิดกั้นการสื่อสารระหว่างไคลเอ็นต์กับลูกค้า

เราเตอร์ของคุณอาจทิ้งแพ็กเก็ตที่ไม่ได้ร้องขอทั้งหมดนั่นเป็นสาเหตุที่เพื่อนของคุณได้รับข้อความ "การเชื่อมต่อหมดเวลา" ในที่อยู่ IP สาธารณะของคุณ กำหนดค่าการส่งต่อพอร์ต NAT เพื่อให้ที่อยู่ IP สาธารณะ + พอร์ตรวมกันส่งต่อไปยังที่อยู่ LAN ของคุณ

เครือข่ายตัวอย่าง:

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

บนเราเตอร์ Aตั้งค่าการส่งต่อ 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 (Desktop A) และพอร์ต 2222 (แล็ปท็อป A)

เดสก์ท็อปสามารถเข้าถึงได้โดยใช้ SSH ด้วย:

ssh user@198.51.100.1 -p 22

สามารถเข้าถึงแล็ปท็อปได้โดยใช้ SSH ด้วย:

ssh user@198.51.100.1 -p 2222

หากคุณต้องการเข้าถึงเครื่องเพื่อนของคุณให้ใช้คำแนะนำเหล่านี้กับเครื่อง + เราเตอร์ของเขา


3

ฉันมีปัญหาที่คล้ายกัน หนึ่งเครื่องบนสายหนึ่งไร้สาย ฉันพบช่องทำเครื่องหมายในเราเตอร์ของฉันนอกเหนือจาก "แยก IPS สำหรับ LAN และ WLAN" และทำเครื่องหมายออก ตอนนี้ฉันสามารถเข้าสู่ระบบคอมพิวเตอร์แบบไร้สายได้แล้ว ก่อนหน้านั้นฉันได้รับข้อความแสดงข้อผิดพลาด "ไม่มีเส้นทางไปยังโฮสต์"


1

ทำเครื่องหมายที่เช็กบ็อกซ์ ssh ขณะติดตั้ง RHEL ฉันไม่ได้ตรวจสอบและทำให้เกิดปัญหาเดียวกัน โปรดตรวจสอบพารามิเตอร์นั้น


1

ฉันได้รับปัญหาเดียวกันตอนนี้ใน vps และมันแปลกอย่างสมบูรณ์ไม่เคยเห็นอะไรเหมือนมัน

ฉันเป็นผู้ดูแลเซิร์ฟเวอร์ที่มีประสบการณ์และข้อผิดพลาดประเภทนี้มักจะถูกตัดและแห้ง

ไม่มีเส้นทางไปยังโฮสต์หมายความว่าเซิร์ฟเวอร์ไม่ทราบวิธีกำหนดเส้นทางแพ็คเก็ต (ตารางเส้นทางอย่างไรก็ตามฉันไม่เคยเห็นมันเกิดขึ้นในโปรโตคอลเดียวเท่านั้นและไม่ใช่โปรโตคอลอื่น)

ในกรณีของฉัน

ไม่มีการเชื่อมต่ออินเทอร์เน็ต NAT ไม่มี IPTABLES Ping ทำงานฉันสามารถเชื่อมต่อกับ ip ของ ip ทั้งสองข้างได้ ip ที่ใช้งานไม่ได้บอกว่า "ไม่มีเส้นทางไปยังโฮสต์" บนพอร์ต tcp ใด ๆ

สิ่งนี้ชี้ให้เห็นบางสิ่งที่อยู่ตรงกลางกำลังส่งคืนรหัสข้อผิดพลาดหรือข้อบกพร่องในระบบปฏิบัติการด้วยตารางเส้นทาง

โปรดทราบว่าข้อผิดพลาดนั้นเกิดขึ้นในทันทีไม่ใช่ความล่าช้าหมายความว่าการปฏิเสธนั้นอยู่ในเครื่อง แต่นั่นคือทั้งหมดที่ฉันสามารถวินิจฉัย

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

ฉันจะได้รับข้อผิดพลาดแปลก ๆ นี้หลังจากใช้ SSH ระหว่างพีซีและราสเบอร์รี่ Pi สำเร็จแล้ว สิ่งที่แก้ไขได้สำหรับฉันคือปิดและเปิด wifi (ทั้งไคลเอนต์และโฮสต์) รีสตาร์ทเครื่องของคุณและใช้ที่อยู่ IP ใหม่


0

ในกรณีของฉันมีเครือข่ายนักเทียบท่าบน CIDR เดียวกับ VPN ของฉัน

ฉันใช้คำสั่งต่อไปนี้เพื่อค้นหาว่าเครือข่ายใดจากนั้นฉันก็ลบออก:

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

หลังจากนั้นก็ใช้งานได้ดี


-3

หากคุณเปลี่ยน / แทนที่ฮาร์ดไดรฟ์ระบบของคุณแล้วให้ลองลบโฮสต์คีย์ออกจากไฟล์. ssh / known_hosts จากนั้นลองเชื่อมต่ออีกครั้ง


1
-1 สิ่งนี้ไม่มีอะไรเกี่ยวข้องกับทั้งข้อผิดพลาดในการเชื่อมต่อตามที่กำหนดในคำถาม ('ไม่มีเส้นทางไปยังโฮสต์', 'การเชื่อมต่อหมดเวลา')
gertvdijk

อืมฉันรู้ แต่บางครั้งก็ลบ hostkey และเพิ่มการทำงานอีกครั้ง
Ratiranjan Kar
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.