บังคับให้ ssh ไม่พิมพ์คำเตือน“ การระบุโฮสต์ระยะไกลมีการเปลี่ยนแปลง”


23

มีวิธีหลีกเลี่ยงข้อความเตือนการพิมพ์ ssh เช่นนี้หรือไม่?

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",

แม้ว่าข้อมูลประจำตัวของโฮสต์ระยะไกลมีการเปลี่ยนแปลง แต่ฉันรู้ว่ามันเป็นเรื่องปกติและเพียงแค่ต้องการที่จะกำจัดคำเตือนนี้

คำตอบ:


16

สี่วิธี:

ในการเชื่อมต่อเพียงครั้งเดียวกับระบบด้วยรหัสโฮสต์ใหม่โดยไม่ต้องตอบคำถามให้เชื่อมต่อกับตัวเลือกต่อไปนี้:

ssh -q -o "StrictHostKeyChecking no" this.one.host.name

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

Host *
StrictHostKeyChecking no

ในการลบอย่างถาวรคำเตือนทั้งหมดสำหรับการนี้หนึ่งเซิร์ฟเวอร์การแก้ไขของคุณ~/.ssh/configไฟล์และเพิ่มบรรทัดต่อไปนี้:

Host this.one.hostname
StrictHostKeyChecking no  

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


ในตัวเลือกที่สองนั้นต้องทำการกำหนดค่าในฝั่งเซิร์ฟเวอร์ที่เรากำลังเชื่อมต่ออยู่ใช่ไหม?
coffeMug

ไม่เป็นของคุณเอง$HOME/.ssh/configที่มีความสำคัญในตัวเลือกที่สองและสาม
เจนนี่ D

ยังคงพิมพ์คำเตือนสำหรับฉัน (แม้ว่าจะอนุญาตการเชื่อมต่อ)
Michael Mior

24

เพิ่มสิ่งนี้ใน ~ / .ssh / config ของคุณ:

Host 10.*                            # use your own pattern here, eg. *.example.com, example.*.com
  StrictHostKeyChecking   no         # turn off the HostKey check                                                               
  LogLevel                ERROR      # keep it from printing to STDOUT
  UserKnownHostsFile      /dev/null  # (optional) add the host automatically to a black hole, otherwise it would be added to ~/.ssh/known_hosts and show you a warning/message at the top of your session. You may want it added to known_hosts if your shell uses `ssh` autocompletion, such as fish. 

3
MOD UP - อันเดียวที่ตอบคำถามได้จริง - นี่เป็นคำตอบเดียวที่ไม่เพียง แต่ใช้งานได้เท่านั้น
แบรด

อ๊ะดูเหมือนว่าผู้ใช้งานของ fish shell จะไม่สามารถใช้การเติมข้อความอัตโนมัติ ssh ที่ดีสำหรับโฮสต์ที่เชื่อมต่อก่อนหน้านี้หากพวกเขาใส่ UserKnownHostFile ไปที่ / dev / null ผู้ใช้งานปลาและอาจเป็นไปได้ว่าทุกคนไม่ควรตั้งค่านั้น
Elijah Lynn

คุณควรทำssh0สคริปต์ / นามแฝง / ฟังก์ชั่นและการใช้งานที่ชัดแจ้งแทนการทิ้งตัวเลือกเหล่านั้นลงssh -o UserKnowHostsFile=/dev/null -o LogLevel=ERROR ~/.ssh/configคุณอาจลืมเกี่ยวกับพวกเขาแล้วสงสัยว่าทำไมการตรวจสอบไม่ทำงานเมื่อคุณต้องการให้พวกเขาทำงาน
ลุงบิลลี่

20

คุณสามารถลบบรรทัดสำหรับโฮสต์นั้นออกได้~/.ssh/known_host(ทุกโฮสต์มีบรรทัดเป็นรายการที่นั่น)

ทางเลือกคือการใช้:

ssh -q -o "StrictHostKeyChecking no" ....

เพียงแค่ใช้-qจะมีความsshล้มเหลวอย่างเงียบ ๆ


9

การไม่เพิ่มโฮสต์คีย์ในค่าเริ่มต้น $ HOME / .ssh / known_hosts เป็นที่ต้องการ

ใช้-o UserKnownHostsFile=/dev/nullนอกเหนือจาก-qและ-o StrictHostKeyChecking=noเพื่อเก็บไม่รู้จักกระจัดกระจาย นี่คือตัวอย่าง:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q user@scripts.local

2

ข้อเสนอแนะทางเลือกคือการระบุสาเหตุที่คีย์โฮสต์เปลี่ยนแปลงและทำให้หยุดทำเช่นนั้น

ตัวอย่างเช่นหากคุณกำลังสร้างโฮสต์ในคอนเทนเนอร์หรือผ่านระบบการจัดเตรียมตรวจสอบให้แน่ใจว่าสิ่งเหล่านี้ใช้คีย์โฮสต์ที่รู้จักกันต่ออินสแตนซ์เสมอ

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

มิฉะนั้นฉันจะลงคะแนนเพื่อStrictHostKeyChecking Noในของคุณ~/.ssh/config สำหรับโฮสต์ที่เฉพาะเจาะจงในคำถามเท่านั้น

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