ฉันต้องการที่จะเชื่อมต่อไปยังโฮสต์ผ่าน SSH ~/.ssh/known_hosts
แต่ฉันไม่ต้องการชื่อโฮสต์ที่จะเพิ่มของฉัน
ฉันจะทำสิ่งนั้นได้อย่างไร
ฉันต้องการที่จะเชื่อมต่อไปยังโฮสต์ผ่าน SSH ~/.ssh/known_hosts
แต่ฉันไม่ต้องการชื่อโฮสต์ที่จะเพิ่มของฉัน
ฉันจะทำสิ่งนั้นได้อย่างไร
คำตอบ:
-o "UserKnownHostsFile /dev/null"
ควรทำงาน.
grep
จะรวม stdout และ stderr; สถานะการออกสามารถเปลี่ยนแปลงได้เช่นกัน ถ้าใช้มันจะดีกว่าที่จะใช้ทดแทนกระบวนการที่จะได้รับการกำจัดของข้อความ:bash
ssh 2> >( egrep >&2 -v '^Warning: Permanently added') -o "UserKnownHostsFile /dev/null" [...]
มันจะหลีกเลี่ยงไปป์และทำให้การเปลี่ยนแปลงที่สอดคล้องกันในการจัดการสถานะทางออก
หากคุณต้องการพฤติกรรมนี้เนื่องจากคุณทำงานกับเซิร์ฟเวอร์คลาวด์ (AWS EC2, Rackspace CloudServers เป็นต้น) หรือคุณเตรียมรูปภาพใหม่ใน Vagrant อย่างต่อเนื่องคุณอาจต้องการอัปเดต SSH ของคุณแทนการเพิ่มนามแฝงทุบตีหรือตัวเลือกอื่น ๆ ใน บรรทัดคำสั่ง.
ลองเพิ่มสิ่งที่ชอบ:
Host *.mydomain.com
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User foo
LogLevel QUIET
ฉันรู้สึกอยากเพิ่มโฮสต์คีย์ของคุณ known_hosts (ผู้ใช้บริการเหล่านี้อย่างน้อยฉลาดพอที่จะทำให้คีย์โฮสต์ของพวกเขาสอดคล้องกันระหว่างเครื่องที่ใช้ชื่อโฮสต์เดียวกัน) จากนั้นเปิด StrictHostKeyChecking ปิด CheckHostIP และ การเข้าสู่ระบบด้วย LogLevel ข้อผิดพลาดจะทำให้คุณได้รับประสบการณ์ที่ดีที่สุดโดยไม่ลดทอนความปลอดภัย (ตกลงโดยไม่มี CheckHostIP คุณจำเป็นต้องเชื่อถือ DNS ซึ่งเป็นช่องโหว่ขนาดใหญ่ที่ไม่มี DNSSEC หรือสิ่งที่คล้ายกัน แต่เราจะกวาดมันไปใต้พรมสักครู่)
ฉันใช้ไฟล์ known_hosts แบบอ่านอย่างเดียวดังนั้นฉันต้องทำอะไรบางอย่างหรือฉันได้รับคำเตือนไม่รู้จบเกี่ยวกับการไม่สามารถเพิ่มรายการใน known_hosts
สิ่งที่ฉันใช้:
Host github.com *.github.com
StrictHostKeyChecking yes
CheckHostIP no
LogLevel ERROR
ฉันต้องการให้บริการเหล่านี้เผยแพร่คีย์โฮสต์ SSH ของพวกเขาบนเว็บไซต์ของพวกเขาผ่าน HTTPS ดังนั้นฉันสามารถคัดลอกพวกเขาอย่างชัดเจนโดยไม่ต้องเชื่อมต่อก่อนและอาจเปิดเผยตัวเองกับการโจมตีของ MITM
สำหรับเซสชัน ssh เดียวให้ใช้สิ่งนี้
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null user@host
ฉันแนะนำ
LogLevel ERROR
เกิน
LogLevel QUIET
ดังนั้นคุณยังคงได้รับ "ไม่สามารถแก้ไขชื่อโฮสต์" และข้อผิดพลาดอื่น ๆ
คุณได้ลองปิดการใช้งานStrictHostKeyChecking
? คุณสามารถทำมันด้วยตัวเลือกหรือในแฟ้มการกำหนดค่า-o
~/.ssh/config
ฉันพบรายการ. ssh / config ต่อไปนี้มีประโยชน์ (LAN ที่มี DHCP และ DNS):
CheckHostIP no
Host *.*
CheckHostIP yes
ผลลัพธ์คือชื่อเครื่องท้องถิ่น "zora" หรือ "goron" จะไม่ตรวจสอบกับที่อยู่ IP ที่กำหนดแบบไดนามิก แต่ www.mycompany.com หรือ node42.planetlab.com จะยังคงมีการยืนยัน IP แบบคงที่ของพวกเขา
grep -v "^Warning: Permanently added"