ข้อผิดพลาด ssh นี้หมายถึงอะไร


9

นี่เป็นทางเลือกสุดท้ายของฉัน ฉันพยายามหาปัญหามาหลายชั่วโมงแล้ว

นี่คือข้อตกลง: ฉันได้คัดลอกคีย์ส่วนตัวของฉันจากเครื่อง # 1 ไปยังเครื่อง # 2 เครื่อง # 1 สามารถเชื่อมต่อผ่าน ssh ไปยังเซิร์ฟเวอร์ด้วยรหัสสาธารณะของฉันได้ดี แต่เครื่อง # 2 ให้ผลลัพธ์ต่อไปนี้เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์:

$ ssh -vvv -i /home/kevin/.ssh/kev_rsa user@192.168.1.244 -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace

...


Permission denied (publickey).

เห็นได้ชัดว่ามีการแก้ไขข้อบกพร่องเพิ่มเติมที่ฉันได้ละเว้นและฉันสามารถให้ตามคำขอ ฉันเชื่อว่ามันไม่ชอบไฟล์กุญแจส่วนตัวของฉัน

ฉันยังสงสัยว่ามันเกี่ยวข้องกับวิธีที่ฉันคัดลอกจากเครื่อง # 1 ไปยังเครื่อง # 2 ฉันคัดลอก / วางข้อความจากคีย์ส่วนตัวลงในแฟลชไดรฟ์ นี่อาจเป็นปัญหา แต่เมื่อฉันทำซ้ำวิธีนี้ในไฟล์คีย์ส่วนตัวที่ใช้งานได้และแตกต่างจากต้นฉบับไปยังไฟล์ที่คัดลอก / วางพวกเขาเหมือนกัน

ฉันดิ้นรนกับสิ่งนี้ หากฉันสามารถรับข้อมูลเพิ่มเติมเล็กน้อยว่าทำไมมันไม่ชอบรหัสของฉันฉันสามารถแก้ไขได้ฉันแน่ใจ ใครมีความคิดเห็นเกี่ยวกับเรื่องนี้? มีเมตาดาต้าอยู่บ้างที่บอก ssh ว่าไฟล์นั้นเป็นคีย์ RSA หรือไม่?


และ/var/log/auth.logเซิร์ฟเวอร์พูดว่าอะไร?
womble

สำหรับการชี้แจงคีย์สาธารณะจากเครื่อง 1 เชื่อมต่อกับเซิร์ฟเวอร์ รหัสส่วนตัวจากเครื่อง 1 ที่ทำงานบนเครื่อง 2 จะไม่เชื่อมต่อกับเซิร์ฟเวอร์หรือไม่
Dru

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

@ womble แต่น่าเสียดายที่ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ถ้าฉันสามารถหานี้ฉันจะสามารถ ssh ขวา .. Ahh, irony ... ;)
kevin

ระบบปฏิบัติการบนเครื่องลูกข่ายสองเครื่องคืออะไร การถ่ายโอนคีย์ส่วนตัวทำให้ munged line-endings หรือข้อความที่แนะนำ (อาจเป็นบรรทัดว่างหรือช่องว่าง) ก่อนที่จะเปิดบรรทัด?
Stobor

คำตอบ:


7

จากประสบการณ์ของฉันมีข้อผิดพลาดเกี่ยวกับการรับรองความถูกต้องของคีย์ที่พบบ่อยที่สุดสองข้อ

  1. การอนุญาตใน$HOME/.sshไดเรกทอรีในวงกว้างไม่เหมาะสม
  2. มีข้อผิดพลาดในการคัดลอกกุญแจสาธารณะไปยังระบบรีโมต

สิทธิ์ของไฟล์

OpenSSH พยายามอย่างมากที่จะปกป้องคุณจากตัวคุณเอง ผู้ใช้ที่มีผลกระทบมากที่สุดต่อสิ่งนี้เกิดขึ้นคือการบังคับใช้ข้อ จำกัด ที่เข้มงวดว่าใครสามารถเข้าถึงโฟลเดอร์ ssh ท้องถิ่นของคุณ คุณเพียงต้องการให้คุณและเฉพาะคุณเท่านั้นที่จะเข้าถึงไดเรกทอรี เอ่อและทุกคนที่มี uid = 0 แต่มันไม่มีวิธีที่ดีในเรื่องนั้น ดังนั้นสิ่งที่คุณต้องทำคือเพียงแค่เปลี่ยนสิทธิ์ของคุณ: chmod -R go-rwx ~/.sshนี้จะลบอ่านเขียนและดำเนินการสิทธิไฟล์ใด ๆ ที่อยู่ภายใต้ไดเรกทอรี .ssh จากผู้ใช้ทั้งหมดยกเว้นเจ้าของคือคุณ

ปัญหาคีย์ที่ได้รับอนุญาต

ไฟล์ที่มีกุญแจสาธารณะของคุณโดยทั่วไปจะ$HOME/.ssh/authorized_keysต้องมีรูปแบบที่เฉพาะเจาะจงมากสำหรับ SSH เพื่อให้เข้าใจถึงวิธีการรับคีย์ส่วนตัว แต่ละคีย์ต้องประกอบด้วยอย่างน้อย 2 ฟิลด์

  1. ประเภทของคีย์ที่ใช้ (RSA, DSA, RSA1, ฯลฯ )
  2. สำคัญ

แต่ละคีย์พร้อมด้วยตัวเลือกและส่วนประกอบทั้งหมดจะต้องอยู่ในรายการหนึ่งรายการต่อบรรทัดในไฟล์นี้ เนื่องจากปุ่มเหล่านี้มีความยาวมากจึงมักจะพันและปรากฏเป็นสองบรรทัดบนเครื่องของคุณ บางครั้งสิ่งนี้จะทำให้เกิดความเสียหายเมื่อพยายามคัดลอก / วางเนื่องจากบางครั้งมีการขึ้นบรรทัดใหม่หนึ่งบรรทัดหรือมากกว่านั้นไม่ว่าที่ใดก็ตามที่คีย์แรปบนหน้าจอของคุณ การแก้ไขปัญหานี้อาจเป็นเรื่องยากกว่าสำหรับผู้เริ่มต้นเชลล์

ลองใช้งาน
wc -l ~/.ssh/authorized_keys
สิ่งนี้จะพิมพ์จำนวนบรรทัดในไฟล์ เปรียบเทียบตัวเลขนั้นกับจำนวนของคีย์ที่คุณคาดว่าจะอยู่ในไฟล์ หากคุณจะยอมรับคีย์นี้เพียงคีย์เดียวคุณก็สามารถทำสำเนาไฟล์พับลิกคีย์ได้เนื่องจากเป็นรูปแบบเดียวกับไฟล์คีย์ที่ได้รับอนุญาตของคุณ มีบางอย่างที่เหมือนกับ
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
หรือถ้าคุณมีกุญแจสาธารณะของคุณอยู่ในระบบเดียวกัน
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys

นอกจากนี้ให้ดูในล็อกไฟล์ของรีโมตโฮสต์และดูว่ามีการรายงานข้อผิดพลาดใด ๆ หรือไม่ ไฟล์ส่วนใหญ่มีแนวโน้มที่จะเป็นได้ทั้งหรือ/var/log/secure.log/var/log/auth


1
สวัสดีขอบคุณสำหรับความพยายามของคุณที่นี่ ฉันขอขอบคุณที่ ไม่ใช่ปัญหาการอนุญาต ฉันได้ตรวจสอบสิทธิ์ถูกต้อง (ฉันควรจะเพิ่มว่าเป็นข้อแม้) แม้ว่าฉันจะไม่สามารถเข้าถึงคีย์ดั้งเดิมได้ในตอนนี้ แต่ฉันได้ทำซ้ำกระบวนการที่ฉันใช้เพื่อคัดลอกคีย์ที่ฉันใช้อยู่ ฉันยังทำ md5sum เพื่อตรวจสอบว่าไฟล์เหมือนกัน ทำให้รู้สึก?
วิน

1
และอีกครั้งฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ ชนิดของปัญหาทั้งหมดที่นี่ ... ;)
kevin

@Scott: make a copy of the private key fileควรเป็นกุญแจสาธารณะ (ดังที่แสดงในตัวอย่างของคุณ)
mlp

0

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


2
ฉันอยู่ภายใต้การแสดงผลที่ไม่สนใจสิ่งเหล่านั้นซึ่งเป็นเพียงความคิดเห็นเพื่อช่วยให้คุณระบุพวกเขาเมื่อดูที่ได้รับอนุญาต และอีกครั้งฉันเพิ่งคัดลอก / วางกุญแจ ดังนั้นพวกเขาเหมือนกัน ฉันสงสัยอย่างจริงจังว่ามันตรวจสอบชื่อโฮสต์ของคุณ ถ้าเป็นเช่นนั้นฉันสามารถเปลี่ยนได้อย่างง่ายดาย ห่าผมจะพยายามที่แล้ว ...
kevin

0

ข้อความดีบักที่คุณให้หมายถึงไฟล์ไพรเวตคีย์ถูกอ่านโดยมีข้อสันนิษฐานว่าเป็นไฟล์พับลิกคีย์ / โฮสต์ที่ได้รับอนุญาต นี่อาจไม่ใช่ข้อผิดพลาดร้ายแรง (ฉันได้รับข้อความดังกล่าวแม้กระทั่งสำหรับการเชื่อมต่อที่ใช้งานได้) มันพูดอะไรเกี่ยวกับ "เสนอขาย" หรือ "เราส่ง"?


-3

ลองเปรียบเทียบไฟล์ ssh config ระหว่างเซิร์ฟเวอร์ทั้งสอง

กล่าวคือ แมว / etc / sshd_config


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