ssh: ไม่สามารถแก้ไขชื่อโฮสต์ [hostname]: nodename หรือ servname ที่ระบุหรือไม่เป็นที่รู้จัก


132

ฉันกำลังพยายามตั้งค่า VPN ด้วย Raspberry Pi และขั้นตอนแรกคือการได้รับความสามารถในการsshเข้าสู่อุปกรณ์จากภายนอกเครือข่ายท้องถิ่นของฉัน ไม่ว่าด้วยเหตุผลใดสิ่งนี้พิสูจน์ได้ว่าเป็นไปไม่ได้และฉันก็ไม่ได้ระแคะระคายเลยแม้แต่น้อยว่าทำไม เมื่อฉันพยายามsshเข้าสู่เซิร์ฟเวอร์ของuser@hostnameฉันฉันได้รับข้อผิดพลาด:

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known 

อย่างไรก็ตามฉันสามารถเข้าสู่เซิร์ฟเวอร์ด้วย

ssh user@[local IP]

เซิร์ฟเวอร์เป็น Raspberry Pi Model B ที่รันการกระจายล่าสุดของ Raspbian และเครื่องที่ฉันพยายามเชื่อมต่อด้วยคือ Macbook Pro ที่ใช้ Mavericks sshถูกเปิดใช้งานบน Raspberry Pi เมื่อฉันตั้งค่า Raspbian

ฉันอ่าน Stack Overflow มาหลายชั่วโมงแล้วเพื่อพยายามดูว่ามีใครมีปัญหานี้อีกหรือไม่และฉันไม่พบอะไรเลย ทุกsshบทช่วยสอนที่ฉันพบบอกว่าฉันควรจะสามารถตั้งค่าบนเครื่องระยะไกลและเข้าสู่ระบบได้จากทุกที่โดยใช้ชื่อโฮสต์และฉันไม่เคยประสบความสำเร็จในเรื่องนี้


ข้อผิดพลาดเดิมกำลังชี้ไปที่ปัญหาเฉพาะสิ่งที่[hostname]คุณใช้ไม่สามารถแก้ไขได้จากที่ที่คุณกำลังลองใช้ ไม่nslookup [hostname]ทำให้คุณกลับ[local IP]ที่คุณคาดหวัง?
สมัคร

2
nslookup [hostname]คาย; เซิร์ฟเวอร์: 8.8.8.8 ที่อยู่: 8.8.8.8 # 53 ** เซิร์ฟเวอร์ไม่พบ [hostname]: NXDOMAIN เมื่อเรียกใช้จาก Macbook ของฉัน
qaxf6auux

2
เพื่อให้แน่ใจว่าคุณกำลังใส่ชื่อโฮสต์จริง[hostname]ใช่ไหม?
สมัคร

ผลลัพธ์นั้นแสดงว่าคุณกำลังใช้เซิร์ฟเวอร์ DNS สาธารณะของ Google ซึ่งไม่มีความรู้เกี่ยวกับชื่อโฮสต์ใด ๆ ที่คุณพยายามใช้ คุณตั้งค่าระเบียน DNS สำหรับชื่อโฮสต์ของคุณอย่างไร
สมัคร

2
Server: 192.168.0.1 Address: 192.168.0.1#53 ** server can't find mrddr: NXDOMAIN
Nakilon

คำตอบ:


29

เมื่อเร็ว ๆ นี้ฉันเจอปัญหาเดียวกัน ฉันสามารถ ssh ไปยัง pi บนเครือข่ายของฉันได้ แต่ไม่ใช่จากภายนอกเครือข่ายในบ้านของฉัน

ฉันมีแล้ว:

  • ติดตั้งและทดสอบ ssh บนเครือข่ายในบ้านของฉัน
  • ตั้งค่า IP แบบคงที่สำหรับปี่ของฉัน
  • ตั้งค่าบริการ Dynamic DNS และติดตั้งซอฟต์แวร์บน pi ของฉัน ฉันอ้างอิงคำแนะนำเหล่านี้สำหรับการตั้งค่าสแตติกไอพีและมีแหล่งข้อมูลคำแนะนำเพิ่มเติมมากมาย

นอกจากนี้ฉันตั้งค่าพอร์ตฟอร์เวิร์ดบนเราเตอร์สำหรับโฮสต์เว็บไซต์และฉันมีพอร์ตฟอร์เวิร์ด 22 ไปยัง IP แบบคงที่ของ pi สำหรับ ssh แต่ฉันปล่อยฟิลด์ว่างไว้ซึ่งคุณระบุแอปพลิเคชันที่คุณกำลังดำเนินการส่งต่อพอร์ต เราเตอร์ อย่างไรก็ตามฉันเพิ่ม 'ssh' ลงในช่องนี้และ VOILA! การเชื่อมต่อ ssh ที่ใช้งานได้จากทุกที่ไปยัง pi ของฉัน

ฉันจะเขียนการตั้งค่าการส่งต่อพอร์ตของเราเตอร์ของฉัน

(ApplicationTextField) _ssh (พอร์ตภายนอก) _22 (พอร์ตภายใน) _22 (Protocal) _ ทั้งสอง (ไปยังที่อยู่ IP) _192.168.1. ### (เปิดใช้งาน) _checkBox

การตั้งค่าการส่งต่อพอร์ตอาจแตกต่างกันไปสำหรับเราเตอร์ที่แตกต่างกันดังนั้นค้นหาคำแนะนำสำหรับเราเตอร์ของคุณ

ตอนนี้เมื่อฉันอยู่นอกเครือข่ายในบ้านฉันเชื่อมต่อกับ pi โดยพิมพ์:

ssh pi @ [ชื่อโฮสต์]

จากนั้นฉันสามารถป้อนรหัสผ่านและเชื่อมต่อได้


109

หากคุณใช้ Mac การรีสตาร์ทตัวตอบสนอง DNS ช่วยแก้ปัญหาให้ฉัน

sudo killall -HUP mDNSResponder

ฉันยังต้องการ ping, nslookup และขุดโดเมน ไม่แน่ใจว่าข้อใดช่วยได้บ้าง บางทีแค่รอความช่วยเหลือ
Samizdis

ทำงานให้ฉันด้วย.. ปัญหานี้เริ่มต้นขึ้นหลังจากที่ฉันรีสตาร์ทเครื่อง Mac .. ไม่รู้ว่าเกิดอะไรขึ้นระหว่างการบูต
murli

1
ฉันยังอยากรู้ว่าทำไมถึงได้ผล ... และอะไรเป็นสาเหตุของปัญหาในตอนแรก
mystic cola

หากใช้nslookupงานได้ แต่ ssh / ping / อะไรก็ตามไม่ได้สิ่งนี้จะแก้ไขปัญหาได้ ขอบคุณ
Erik B

93

ฉันมีปัญหาเดียวกันในการเชื่อมต่อกับเครื่องระยะไกล แต่ฉันสามารถเข้าสู่ระบบได้ดังนี้:

ssh -p 22 myName@hostname

หรือ:

ssh -l myName -p 22 hostname

1
ในที่สุดก็ใช้งานได้! ต้องมีข้อผิดพลาดกับไวยากรณ์ssh myName@hostname:myPort
Edoardo

10

หากคุณต้องการเข้าถึง VPN ของคุณจากทุกที่ในโลกคุณต้องลงทะเบียนชื่อโดเมนและให้มันชี้ไปที่ที่อยู่ IP สาธารณะของเกตเวย์ VPN / เครือข่ายของคุณ คุณยังสามารถใช้บริการ Dynamic DNS เพื่อเชื่อมต่อชื่อโฮสต์กับ IP สาธารณะของคุณ

หากคุณต้องการเพียงที่จะ SSH จากเครื่อง Mac ของคุณเพื่อราสเบอร์รี่ของคุณภายในเครือข่ายท้องถิ่นของคุณทำเช่นนี้: บน Mac /etc/hostsของคุณแก้ไข สมมติว่า Raspberry มีชื่อโฮสต์ "berry" และ ip "172.16.0.100" ให้เพิ่มหนึ่งบรรทัด:

# ip           hostname
172.16.0.100   berry

ตอนนี้: ssh user@berryควรทำงาน


นอกเหนือจากข้างต้นฉันใช้ "windows-cmd" เพื่อทำความรู้จักกับ ip สำหรับ url เซิร์ฟเวอร์ของฉัน ฉันทำ "ping url" เพื่อรับ IP ดังนั้นจึงเพิ่ม IP และคู่ URL ใน "/ etc / hosts" มันทำงานได้อย่างสมบูรณ์แบบหลังจากนั้น (git pull ฯลฯ )!
Parasrish

9

ฉันมีปัญหาเดียวกันซึ่งฉันสามารถแก้ไขได้โดยการเพิ่ม. local ให้กับชื่อโฮสต์เช่นกัน ssh user@hostname.local


ที่ทำเพื่อฉัน ping $(hostname)ได้ทำงาน ssh $(hostname).localแต่ต้องทำ Mac มักจะดีมาก .. แต่เมื่อมันห่วยมันก็ทำได้จริงๆ ..
javadba

ฉันมีปัญหาเพิ่มเติม: hadoopต้องทำssh user@hostnameและไม่สามารถเพิ่ม.localด้วยตนเองได้ ฉันติดอยู่
javadba

การเพิ่ม.localมันให้ฉันบน Ubuntu 19.10
prkos

5

ในกรณีของฉันฉันพยายาม ssh แบบนี้

ssh pedro@192.168.2.179:22 

เมื่อรูปแบบที่ถูกต้องคือ:

ssh pedro@192.168.2.179 -p 22 

1
ว้าว - ติดอยู่ตลอดไปกับการส่งต่อพอร์ต! นี่คือข้อความศักดิ์สิทธิ์
frozenOne

4

หากคำสั่งของคุณคือ:

$ ssh -p 1122  path/to/pemfile user@[hostip/hostname]

คุณจะต้องเผชิญกับข้อผิดพลาดเดียวกัน

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known

เมื่อคุณพลาดตัวเลือก-i /path/to/pemfilessh

ดังนั้นคำสั่งควรเป็น:

$ ssh -p 1122 -i path/to/pemfile user@[hostip/hostname]

ฉันไม่ได้ใช้ตัวเลือก pemfile แต่ยังคงเชื่อมต่อโดยใช้ssh -p xxxx user@hostname
Yoku

4

ฉันต้องการเชื่อมต่อกับเซิร์ฟเวอร์ Amazon ระยะไกล

ssh -i ~/.ssh/test.pem -fN -L 5555:localhost:5678 ubuntu@hostname.com

ฉันได้รับข้อผิดพลาดต่อไปนี้

ssh: Could not resolve hostname <hostname.com>: nodename nor servname provided, or not known

โซลูชันสำหรับ Mac OSX

การเรียกใช้โฮสต์ช่วยแก้ปัญหาได้ ฉันใช้ Mac OSX Seirra

ping hostname.com

ตอนนี้ปัญหาได้รับการแก้ไขแล้ว สามารถเชื่อมต่อกับเซิร์ฟเวอร์

หมายเหตุ : ฉันลองวิธีนี้ด้วย แต่มันไม่ได้ผล จากนั้นpingแก้ไขปัญหา


3

ฉันมีปัญหาเดียวกัน: ที่อยู่ที่แสดงในการตั้งค่า -> การแชร์ -> การเข้าสู่ระบบระยะไกลไม่ทำงานและฉันได้รับ '... nodename หรือ servname ที่ระบุหรือไม่เป็นที่รู้จัก' อย่างไรก็ตามเมื่อฉันแก้ไขการตั้งค่าด้วยตนเอง (ในการตั้งค่า -> การแชร์ -> การเข้าสู่ระบบระยะไกล -> แก้ไข) และเปิดใช้งาน "ใช้ชื่อโฮสต์ส่วนกลางแบบไดนามิก" ทันใดนั้นก็ใช้งานได้

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


3

ดูเหมือนว่าแอพบางตัวจะไม่อ่านซิมลิงค์/etc/hosts(อย่างน้อยบน macOS) คุณต้องฮาร์ดลิงก์

ln /path/to/hosts_file /etc/hosts


2

สิ่งนี้เกิดขึ้นกับฉันเมื่อพยายามเข้าถึง Github ปัญหาคือฉันมีนิสัยชอบทำ:

git remote add <xyz> ssh:\\git@github.com......

แต่หากคุณมีข้อผิดพลาดนี้จากคำถามให้นำออก ssh:\\อาจช่วยแก้ปัญหาได้ มันแก้ไขให้ฉัน!

ทราบว่าคุณจะต้องทำgit remote remove <xyz>และเพิ่ม URL ssh:\\ที่ระยะไกลโดยไม่ต้อง


1
คุณใช้ssh:\\มากกว่าจริงssh://หรือไม่?
Radon Rosborough

@RadonRosborough นี่มันเมื่อสักครู่แล้ว ... ดังนั้นฉันไม่แน่ใจ อาจจะมี! :)
พระภิกษุ

1

สำหรับฉันปัญหาคือการพิมพ์ผิดใน~/.ssh/configไฟล์ของฉัน ฉันมี:

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

ปัญหาคือ:หลังจากhost1- มันไม่ควรอยู่ที่นั่น sshไม่มีคำเตือนสำหรับการพิมพ์ผิดใน~/.ssh/configไฟล์ เมื่อไม่พบให้ค้นหาhost1เครื่องในพื้นที่ไม่พบและพิมพ์ข้อความแสดงข้อผิดพลาดที่เป็นความลับ


0

ลองใช้สิ่งนี้โดยพิจารณาพอร์ตที่คุณอนุญาต เก็บ.pemไฟล์ของคุณไว้ในDocumentsโฟลเดอร์เช่น

ในการเข้าถึงตอนนี้สิ่งที่คุณต้องทำคือcd [directory]ย้ายคุณไปยังไดเร็กทอรีของไฟล์ที่กำหนด ก่อนอื่นคุณสามารถพิมพ์lsเพื่อแสดงรายการเนื้อหาไดเรกทอรีที่คุณอยู่ในปัจจุบัน:

ls
cd /Documents
chmod 400 mycertificate.pem
ssh -i "mycertificate.pem" ec2-user@ec2-1-2-3-4.us-compass-0.compute.amazonaws.com -p 80

0

ฉันได้รับข้อผิดพลาดนี้จากการใช้ไฟล์สินค้าคงคลัง. yml ในรูปแบบที่ไม่ถูกต้อง สำหรับโฮสต์หลายโฮสต์ในกลุ่มชื่อโฮสต์แต่ละชื่อต้องลงท้ายด้วยเครื่องหมายจุดคู่ ":" มิฉะนั้น ansible จะรันชื่อโฮสต์พร้อมกันและสร้างข้อผิดพลาด ssh นี้

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