ปิดใช้งาน StrictHostKeyChecking ใน ssh


14

ฉันกำลังพยายามเชื่อมต่อกับโฮสต์ Linux โดยใช้sshและได้รับข้อผิดพลาดต่อไปนี้

RSA host key for 10.1.1.20 has changed and you have requested strict checking.

ฉันต้องการลบล้างสิ่งนี้ แต่ดูเหมือนจะไม่พบตัวเลือกใด ๆ รวมกันเพื่อทำสิ่งนี้

ฉันอาจตั้งค่า StrictHostKeyChecking ปีที่แล้ว แต่จำไม่ได้ว่า

ฉันปรึกษาman sshซึ่งแจ้งให้ฉันทราบว่าไฟล์การกำหนดค่าทั้งระบบเป็น/etc/ssh/ssh_configค่าเริ่มต้นสำหรับไฟล์กำหนดค่าต่อผู้ใช้ที่~/.ssh/configไม่มีอยู่

แก้ไขเพื่อชี้แจงคำถามของฉันมีการตั้งค่าตัวเลือกไว้อย่างชัดเจน ฉันกำลังพยายามค้นหา

  1. ตัวเลือกจะถูกเก็บไว้ที่ไหน (ฉันไม่มีไฟล์ที่กล่าวถึงใน man page ซึ่งดูเหมือนจะผิด)
  2. วิธีการเปลี่ยนตัวเลือก

ฉันไม่ได้มองหาวิธีแก้ไขปัญหาที่ฉันมีอยู่ (ฉันรู้ว่าฉันสามารถแก้ไขไฟล์ known_hosts ได้ แต่สิ่งนี้น่าเบื่อทุกครั้งที่ฉันลองใช้เซิร์ฟเวอร์ใหม่)


มันเป็นของ/etc/ssh_configฉัน
sborsky

@ สถิตฉันมีสิ่งนี้เช่นกัน (ซึ่งแตกต่างจากผู้ชาย) แต่ตัวเลือกทั้งหมดจะแสดงความคิดเห็น
Milliways

askนี้เริ่มต้นวิธีการซึ่งตามหน้าคนเป็น เมื่อคีย์โฮสต์เปลี่ยนลูกค้า SSH จะไม่เชื่อมต่อเว้นแต่มีการตั้งค่าStrictHostKeyChecking noหากรหัสโฮสต์ไม่เปลี่ยนแปลงบ่อยนักฉันขอแนะนำให้ลบรหัสโฮสต์นี้จากคุณ~/.ssh/known_hostsแทนการเปลี่ยนการตั้งค่า
sborsky

1
ก่อนอื่นคุณต้องเข้าใจว่าทำไมมันถึงเปลี่ยนไป หากคุณไม่ได้เปลี่ยนมันอาจเป็นการโจมตี MitM และแน่นอนว่าคุณไม่ควรอนุญาตคีย์โฮสต์นี้!
ชื่อที่ปรากฏ

สังเกตด้าน - หลังจากลบระเบียนทั้งหมดสำหรับโฮสต์ที่ได้รับจากฉันยังคงได้รับการเตือนจนผมค้นพบแถวที่กระทำผิดในแฟ้มอื่นเรียกว่า.ssh/known_hosts .ssh/known_hosts2เห็นได้ชัดว่า OS X ใช้ทั้งคู่
billynoah

คำตอบ:


18

หากต้องการปิดใช้งานการตรวจสอบโฮสต์ที่เข้มงวดใน OS X สำหรับผู้ใช้ปัจจุบันให้สร้างหรือแก้ไข ~ / .ssh / config และเพิ่มบรรทัดต่อไปนี้:

Host [IP Address] 
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

ตัวอย่างทั่วไปสำหรับโฮสต์ในเครือข่ายท้องถิ่นของคุณอาจเป็น:

Host 10.1.1.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

ฉันไม่แนะนำให้ปิดการใช้งานการตรวจสอบคีย์โฮสต์ที่เข้มงวดสำหรับโฮสต์ทั้งหมดทั้งนี้ขึ้นอยู่กับการใช้งานของคุณ

หากคุณต้องการลบรายการสำหรับ 10.1.1.20 open ~ / .ssh / known_hosts ด้วยเครื่องมือแก้ไขที่คุณเลือกและลบบรรทัดที่เกี่ยวข้อง "10.1.1.20 ssh-rsa public-key $ "


ดูเหมือนว่าจะทำงานโดยไม่มีบรรทัด / dev / null
John2095

6

คุณสามารถลองใช้งานได้โดยไม่ต้องมีข้อ จำกัด เพียงแค่ commandline:

ssh -o StrictHostKeyChecking=no hostname

แต่ฉันไม่คิดว่าจะทำทุกสิ่งที่คุณต้องการ หากคุณต้องการละเว้นการตรวจสอบ hostkey ทั้งหมดคุณจะต้องตั้งค่าknown_hostsไฟล์ของคุณ/dev/nullเพื่อไม่ให้มีการจัดเก็บอะไรเลย:

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostname

หรือใน/etc/ssh_config:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

วันที่ 1 ยังไม่อนุญาตให้ฉันเชื่อมต่อ แต่ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null hostnameทำ ฉันยังไม่พบ WHERE StrictHostKeyChecking ตั้งอยู่ที่ใด!
Milliways

มันเป็นค่าเริ่มต้นที่ "ใช่" ดังนั้นจึงไม่จำเป็นต้องตั้งค่าให้ใช้ทุกที่
Jakuje

เอกสารระบุว่าค่าเริ่มต้นคือใช่
Milliways

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