Score:0

ssh-keyscan ไปยังknown_hosts ไม่สร้างผลลัพธ์

ธง gb
A L

เมื่อฉันดำเนินการ:

ssh-keyscan -H 172.22.56.2

ฉันได้รับผลลัพธ์ต่อไปนี้:

# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31

ถ้าฉันลอง:

ssh-keyscan -H 172.22.56.2 >> ~/.ssh/known_hosts

ไม่คุ้นเคยกับ ssh-keyscan แต่เชื่อว่าผลลัพธ์ที่ฉันต้องเป็น .. ไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันยังลองรูปแบบต่างๆ ของ -t เช่น:

ssh-keyscan -H -t rsa 172.22.56.2 >> ~/.ssh/known_hosts

ผลลัพธ์ทั้งหมดจะเหมือนกัน สิทธิ์ในไฟล์คือ:

-rw-r--r-- 1 ชื่อผู้ใช้ ชื่อผู้ใช้ 886

'ชื่อผู้ใช้' คือชื่อที่ใช้คำสั่งด้านบน .. สิ่งนี้ทำให้ฉันมีคำถามต่อไปนี้:

  1. เอาต์พุต ssh-keyscan ของฉันสื่อสาร / หมายถึงอะไร ฉันคาดหวังบางอย่างเช่น |1|weofijgojw = sshkey string ที่นี่
  2. เหตุใดจึงไม่เขียนถึง ~/.ssh/known_hosts โดยไม่คำนึงถึง ไม่มีการระบุถึงปัญหาที่แจ้งกลับมาให้ฉัน / คำสั่งใช้

ขอขอบคุณล่วงหน้าสำหรับข้อมูลเชิงลึก!

อัปเดต 1:

user@ชื่อโฮสต์:~$ ssh [email protected]
ไม่สามารถเจรจากับ 172.22.56.2 พอร์ต 22: ไม่พบวิธีการแลกเปลี่ยนคีย์ที่ตรงกัน ข้อเสนอของพวกเขา: diffie-hellman-group1-sha1

user@ชื่อโฮสต์:~$ ssh [email protected] -oKexAlgorithms=+diffie-hellman-group1-sha1
ไม่สามารถเจรจากับ 172.22.56.2 พอร์ต 22: ไม่พบประเภทคีย์โฮสต์ที่ตรงกัน ข้อเสนอของพวกเขา: ssh-dss

user@hostname:~$ ssh [email protected] -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss
ไม่สามารถเจรจากับ 172.22.56.2 พอร์ต 22: ไม่พบรหัสที่ตรงกัน ข้อเสนอของพวกเขา: 3des-cbc

user@hostname:~$ ssh [email protected] -oKexAlgorithms=+diffie-hellman-group1-sha1 -oHostKeyAlgorithms=+ssh-dss -oCiphers=+3des-cbc

ไม่สามารถสร้างความถูกต้องของโฮสต์ '172.22.56.2 (172.22.56.2)' ได้
ลายนิ้วมือของคีย์ DSA คือ SHA256:HwdMfb3k5KwrwQkFIRe6ZXilbObYhNzLbwb0zvk2n8U
คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่/[ลายนิ้วมือ]) ^ซี

user@ชื่อโฮสต์:~$ ssh-keyscan -H 172.22.56.2
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31
# 172.22.56.2:22 SSH-2.0-RomSShell_4.31

การเพิ่มใน '-vv' ใช้กับแอปพลิเคชัน ssh เท่านั้น ไม่ใช่ ssh-keyscan ดังนั้นฉันจึงไม่พบสิ่งที่มีประโยชน์จากสิ่งนั้น

ในทางเทคนิคแล้ว คำถามที่ถูกโพสต์แต่แรกได้รับคำตอบแล้ว แต่นั่นก็เกี่ยวข้องกับการขาดวิสัยทัศน์ที่สมบูรณ์สำหรับการสอบถามของฉัน - ดูเหมือนว่า ณ จุดนี้คำถามที่แท้จริงคือ:

  • เหตุใด ssh-keyscan ไม่ส่งคืนผลลัพธ์เมื่อ ssh ไปยังโฮสต์เดียวกันสร้างพรอมต์คีย์ SSH

ฉันควรเปิดคำถามใหม่หรือเพียงแค่แก้ไขการส่งเดิมของฉัน ขอขอบคุณ!

Ginnungagap avatar
gu flag
โฮสต์เป้าหมายมีรหัสโฮสต์ RSA หรือไม่
dave_thompson_085 avatar
jp flag
@Ginnungagap: OpenSSH ตั้งแต่ 6.1 เมื่อ 9 ปีที่แล้วได้ลองอย่างน้อย 2 อัลกอริธึมและผลลัพธ์ที่นี่แสดงว่าพยายาม 5! OP: บรรทัด `#` เพิ่งบันทึกว่าเป็น _trying_ เพื่อรับรหัส หากสำเร็จใช่ด้วย `-H` คุณจะได้รับบรรทัดในรูปแบบ `|1|base64|base64 อัลกอริทึมชื่อ base64` และเนื่องจากคุณไม่ได้หมายความว่าเซิร์ฟเวอร์ไม่ได้เสนอคีย์ใด ๆ ที่ OpenSSH ของคุณเข้าใจ ดังนั้นจึงมี ไม่มีอะไรจะเขียนไปยังไฟล์ known_hosts ของคุณ `ssh -vv` ควรแสดงใน `debug2: อัลกอริทึมคีย์โฮสต์:` สิ่งที่เซิร์ฟเวอร์เสนอ
A L avatar
gb flag
A L
@dave_thompson_085 - คุณเดฟ! ไม่ชอบ ssh มากนัก โปรดติดตาม Q สำหรับคุณหากคุณไม่รังเกียจ - เมื่อฉันพยายาม ssh [email protected] - ฉันได้รับข้อผิดพลาดที่ไม่รองรับรหัสลับ/อื่นๆ อย่างไรก็ตาม หากฉันจัดหาตัวเลือกดั้งเดิม with -o (KexAlgo/ciphers/hostkeyAlgo) - ฉันได้รับลายนิ้วมือ RSA พร้อมกับใช่/ไม่ใช่เพื่อยอมรับ .. Ty สำหรับการอธิบาย # เอาต์พุต - ฉันถือว่าสิ่งที่คล้ายกัน!
dave_thompson_085 avatar
jp flag
ตัวเลือกเดิมคืออะไร? (อัปสตรีม) OpenSSH ยังคงเสนออัลกอริทึม ssh-rsa ในการเชื่อมต่อตามค่าเริ่มต้น (เช่นใน `myproposal.h`) แม้ว่าพวกเขาจะ _warning_ ก็ตาม แต่พวกเขาจะลบออก 'เร็ว ๆ นี้' ตั้งแต่ 8.2 ในปี 2020-02 และ ssh-keyscan ได้ร้องขอ ทั้ง ssh-rsa และ rsa-sha2-* ที่ใหม่กว่า/ดีกว่า (ซึ่งแชร์ rsa _key_ เดียวกัน) ตั้งแต่ 8.1 ในปี 2019-10 คุณกำลังใช้อะไรอยู่ และได้รับการแก้ไขหรือกำหนดค่าใหม่หรือไม่
A L avatar
gb flag
A L
@dave_thompson_085 - aha - จริง ๆ แล้วฉันแยกปัญหาออกเป็น ssh-keyscan ที่ไม่มีตัวเลือกดั้งเดิมเหล่านั้นตามค่าเริ่มต้น ...คุณรู้วิธีจัดหาพารามิเตอร์ดั้งเดิมที่เป็นทางเลือกเหมือนกันในการอัปเดตล่าสุดของฉันเป็น ssh-keyscan หรือไม่ ฉันควรเรียบเรียงคำถามเกี่ยวกับสิ่งนั้นใหม่หรือสร้างคำถามใหม่
Michael Hampton avatar
cz flag
อย่างที่คุณเห็น อุปกรณ์ระยะไกลมีเฉพาะอัลกอริทึมการแลกเปลี่ยนคีย์และการเข้ารหัสที่ล้าสมัย _weak_ เท่านั้น เป็นเรื่องแปลกมากสำหรับ [ข้อเสนอเชิงพาณิชย์](https://www.allegrosoft.com/product/iot-edge-device/romsshell/) ในวันนี้ สิ่งเหล่านี้ไม่ได้ถูกเปิดใช้งานตามค่าเริ่มต้นใน modern ssh ในปัจจุบัน และในที่สุดก็จะถูกลบออกทั้งหมดตามที่คนอื่นกล่าวไว้ เป็นเรื่องแปลกที่บริษัทจะเรียกสิ่งนี้ว่า "ปลอดภัย" แต่ฉันคิดว่าฉันอาจเจอสิ่งที่แย่กว่านั้น อุปกรณ์นี้คืออะไรกันแน่ และคุณสามารถแทนที่ด้วยอุปกรณ์ที่มีความปลอดภัยบ้างได้หรือไม่
A L avatar
gb flag
A L
@MichaelHampton - เห็นด้วยในกรณีนี้สวิตช์ / เราเตอร์ / AP ของ cisco (หรือเก่ากว่า) หลายสิบปี (หรือเก่ากว่า) - และพวกมันแย่หรือแย่กว่านั้นในหลาย ๆ กรณี จากมุมมองด้านความปลอดภัย เทมเพลตระบบปัจจุบันของเรามีอุปกรณ์ที่ทันสมัยซึ่ง ssh-keyscan ไม่มีปัญหาในการค้นหา Q นี้มีไว้สำหรับกองเรือเก่าที่ฉันกำลังต่อสู้ด้วย กล่าวโดยย่อ - มีแผนที่จะเลิกใช้สิ่งเหล่านี้ แต่มีหลายพันคนที่ฉันต้องการให้สามารถต่อต้านอัตโนมัติได้ในระหว่างนี้ และนี่คืออุปสรรคสำคัญในการทำเช่นนั้นในปัจจุบัน ไม่มีวิธีส่งพารามิเตอร์ดั้งเดิมไปยัง ssh-keyscan หรือไม่
Michael Hampton avatar
cz flag
อาจจะมี คุณตรวจสอบหน้าคนหรือไม่
A L avatar
gb flag
A L
ใช่ - ฉันใช้: https://man.openbsd.org/ssh-keyscan.1 และแหล่งที่มาดั้งเดิมของฉันสำหรับตัวเลือกดั้งเดิมเพื่อรับแอป SSH ปกติเพื่อเชื่อมต่อก็มาจากที่นี่: https://www.openssh com/legacy.html - ไม่มีอะไรในอาร์กิวเมนต์ของแอพที่แนะนำว่าสามารถจัดหาได้ .. แต่ฉันต้องการรับข้อเสนอแนะจากชุมชนในกรณีที่ฉันพลาดหรืออ่านอะไรผิด!
dave_thompson_085 avatar
jp flag
**อา! DSA!** ใช่ ssh-keyscan ไม่ลองใช้ DSA ตามค่าเริ่มต้น แม้ว่า OpenSSH จะเลิกใช้ไปแล้วก็ตาม (7.0 IIRC)`ssh-keyscan -t dsa` อาจใช้งานได้เพื่อรับรหัส (แม้ 8.6 จะตั้งค่า DHG1 สำหรับ kx _in scan_ แต่ดูเหมือนว่าสำหรับฉัน 7.4 ขึ้นไปจะไม่ตั้งค่า 3des) แต่หากต้องการ _connect_ ด้วย `ssh` (หรือ `scp` เป็นต้น) คุณจะต้องมีตัวเลือกทั้งหมดที่คุณพบ
A L avatar
gb flag
A L
@dave_thompson_085 - โอเค เจ๋ง - รู้ไว้ก็ดี! ฉันจะทำงานเพื่อทดสอบสิ่งนี้ในห้องปฏิบัติการของฉัน ในระหว่างนี้คุณต้องการโพสต์คำตอบแยกต่างหากเพื่อให้ฉันสามารถตั้งค่าสถานะ/ยอมรับได้หรือไม่ นี่เป็นปัญหาที่น่ารำคาญมากซึ่งฉันแน่ใจว่าคนอื่นๆ ในระบบเครือข่ายอัตโนมัติจะเจอปัญหาที่ฉันต้องการคำตอบอย่างเป็นทางการ หากฉันเสร็จสิ้นการทดสอบ/ยืนยันก่อนที่จะเห็นสิ่งใดที่โพสต์ที่นี่ ฉันจะเขียนเอง แต่ต้องการให้เครดิตแก่คุณเมื่อถึงกำหนด! ขอบคุณโดยไม่คำนึงถึงความช่วยเหลือของคุณ
Score:1
ธง jp

(จากความคิดเห็นบวกการปรับปรุง)

ปัญหาคืออุปกรณ์เป้าหมายนั้นง่อยจริง ๆ และเห็นได้ชัดว่า (ดังที่ได้รับการวินิจฉัยโดย จุ๊ๆ) รองรับเฉพาะตัวเลือก SSH ที่เก่าและส่วนใหญ่ล้าสมัย ซึ่ง OpenSSH ล่าสุดไม่ชอบ

ประการแรก มีเพียงคีย์ DSA (เช่น สะกด DSS ใน SSH) ssh-keyscan โดยค่าเริ่มต้นไม่เคยร้องขอคีย์ DSA แม้ว่าชุดของประเภทที่ร้องขอจะมีความหลากหลายและรวมอยู่ด้วยเป็นส่วนใหญ่ อื่นๆ ชนิดใหม่ที่เพิ่มเข้ามา นั่นเป็นสาเหตุที่เรียกใช้โดยไม่มีตัวเลือกแสดง 5 ความพยายาม -- เพื่อรับประเภทคีย์ที่อุปกรณ์ไม่มีส่วนนี้สามารถแก้ไขได้โดยการระบุ -t dsa.

ประการที่สอง รองรับเฉพาะ DH group 1 สำหรับ KEX และ 3des-cbc สำหรับการเข้ารหัส แม้ว่า จุ๊ๆ ไม่ถือว่ากลุ่ม 1 ปลอดภัยอีกต่อไปและต้องการ -oKexAlgorithms= ตัวเลือกในการใช้งาน ssh-keyscan บังคับให้มีลักษณะอย่างไร ทั้งหมด กลุ่ม KEX อย่างไรก็ตาม มันไม่ได้เปลี่ยน จุ๊ๆ เริ่มต้นสำหรับ ciphers ดังนั้น ssh-keyscan ใน OpenSSH 7.4 ขึ้นไปยังคงล้มเหลว หากคุณดาวน์เกรดต่ำกว่า 7.4 ฉันเชื่อว่า ssh-keyscan -t dsa จะทำงาน. แน่นอนว่าการดาวน์เกรดนั้นไม่ดีต่อความปลอดภัย ดังนั้นคุณควรทำสิ่งนี้กับ Scratch Monkey เท่านั้น เช่น เครื่องเสมือนหรือคอนเทนเนอร์ที่ถูกละทิ้ง

หรืออย่างที่คุณพบ จุ๊ๆ สามารถ จะได้รับ -o ตัวเลือกที่จะยอมรับตัวเลือกเก่าเหล่านี้ เพื่อให้สามารถรับรหัสโฮสต์และเพิ่มเข้าไปได้ known_hosts. หากข้อกังวลของคุณเป็นเพียงเพื่อหลีกเลี่ยงการโต้ตอบ เช่น ทำให้เป็นอัตโนมัติ ให้ใช้ -oStrictHostKeyChecking=ไม่ (หรือ ยอมรับใหม่ ใน 7.6 ขึ้นไป) ให้ดำเนินการนี้โดยไม่ต้องแจ้ง หากคุณไม่ต้องการให้ใส่คีย์ใหม่ลงในไฟล์โดยตรง ให้ใช้ -oUserKnownHostsFile= เพื่อวางไว้ที่อื่น -- แม้ว่าเมื่อคุณทำเสร็จแล้ว สิ่งเดียวที่ทำได้กับไฟล์ใหม่คือการเพิ่มลงใน known_hosts เหมือนกับ จุ๊ๆ จะมีทำไมต้องกังวล?

A L avatar
gb flag
A L
ตี้หรือนี่! ฉันจะเพิ่มสำหรับทุกคนที่มาที่นี่ผิดหวังจากการใช้สินค้าคงคลัง ansible ข้างต้น - ANSIBLE ไม่ใช้ OPENSSH ของระบบ !! ใช้ libssh หรือ paramiko สำหรับอุปกรณ์เครือข่าย ดังนั้น ข้อมูลข้างต้นจึงมีประโยชน์สำหรับการทำงานอัตโนมัติของเครือข่ายเท่านั้น หากคุณกำลังสร้างสิ่งอื่นๆ เพื่อจัดการกับข้อมูล

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา