พับลิกคีย์จะถามรหัสผ่านและคีย์เวิร์ดเสมอ


19

ฉันพยายามที่จะ SSH จาก NAS ไปยังเว็บเซิร์ฟเวอร์โดยใช้กุญแจสาธารณะ ผู้ใช้ NAS คือ 'รูท' และผู้ใช้เว็บเซิร์ฟเวอร์คือ 'สำรองข้อมูล'

ฉันมีสิทธิ์ทั้งหมดตั้งอย่างถูกต้องและเมื่อฉัน debug การเชื่อมต่อ SSH ที่ฉันได้รับ: (debug เล็กน้อยสุดท้าย)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

ฉันกำลังใช้คำสั่ง:

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

ความจริงที่ว่าการขอข้อความรหัสผ่านเป็นสัญญาณที่ดีแน่นอน แต่ฉันไม่ต้องการให้พรอมต์นี้หรือรหัสผ่าน (ซึ่งมาหลังจากนั้นถ้าฉันกด 'กลับ' ในข้อความรหัสผ่าน)

คำตอบ:


24

นั่นเป็นเพราะรหัสส่วนตัวของคุณถูกเข้ารหัส ...

คุณสามารถเพิ่มคีย์ของคุณไปยังเอเจนต์ ssh โดยใช้ssh-addหรือลบวลีรหัสผ่าน (และด้วยการเข้ารหัส) จากคีย์โดยใช้คำสั่งต่อไปนี้:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


แก้ไข

โอ้ฉันเพิ่งรู้ว่าคุณพยายามใช้กุญแจสาธารณะเพื่อรับรองความถูกต้อง ... คุณต้องการใช้กุญแจส่วนตัวที่นั่น:

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

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

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

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

ตรวจสอบคำตอบที่อัปเดตของฉัน ... อาจจะช่วย ...
andrekeller

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

ความจริงที่ว่าฉันใช้ผับของฉันในการตรวจสอบ (ข้อผิดพลาดโง่ ๆ ) เป็นปัญหา ขอบคุณ!
Qix

6

สิ่งนี้เกิดขึ้นกับฉันเมื่อคีย์ส่วนตัวที่ฉันไม่ได้อยู่ในรูปแบบ OpenSSH

ฉันสร้างคีย์ของฉันบน windows โดยใช้ PuttyGen และได้รับการตีกลับด้วยสิ่งเดียวกันนี้

ฉันสามารถแก้ไขได้โดยการโหลดคีย์ใน PuttyGen และคลิก "การแปลง" เพื่อไปยังรูปแบบ OpenSSH


2

มีบางสิ่ง

ในขั้นต้นถ้า KEY กำลังขอรหัสผ่านกุญแจจะถูกสร้างขึ้นด้วย ประการที่สองหากระบบถามรหัสผ่านหลังจากนั้นกุญแจจะไม่ตรวจสอบสิทธิ์ หมายความว่าคุณจะต้องสร้างคีย์ SSH ใหม่ (หรือเปลี่ยนตามที่แนะนำโดย @rbtux) และแก้ไขไฟล์ที่ได้รับอนุญาต

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "ความคิดเห็นเพิ่มเติม" -f id_examplekey

รายการในวงเล็บปีกกาเป็นตัวเลือกประเภทและขนาดบิต (ในการระบุชัดเจน: dsa> rsa, 4096> 1024 - ในแง่ของ "ความปลอดภัย")

จากนั้นคุณต้องเพิ่มคีย์สาธารณะ (.pub) ลงในไฟล์authorized_keysและauthorized_keys2(เป็นความเข้าใจผิดทั่วไปที่จะพูดว่า. pu สำหรับการใช้งานในท้องถิ่นอย่างไรก็ตามมันตั้งใจจะเปรียบเทียบกับ) ดังนั้นใน.sshโฟลเดอร์ของเซิร์ฟเวอร์

$ cat id_examplekey.pub >> authorized_keys {, 2}

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

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

แต่ส่วนในการดีบักที่อ่าน: debug1: เซิร์ฟเวอร์ยอมรับรหัส: pkalg ssh-dss blen 433 นี่ไม่ได้หมายความว่ากุญแจได้รับการยอมรับแล้วหรือยัง? ฉันสร้างใหม่อีกครั้งโดยไม่มีข้อความรหัสผ่านยังคงเหมือนเดิมหรือไม่ - ฉันไม่มีความคิด? ขอบคุณ
Andrew Atkinson

@AndrewAtkinson ดูเหมือนว่าคุณจะได้รับมันด้านล่าง คุณต้องการไพรเวตคีย์บนจากเครื่อง (โลคัลไคลเอนต์อะไรก็ตาม) และคีย์ public.pub ที่ถูกเพิ่มเข้ากับไฟล์ authorized_keys คำแนะนำอื่น ๆ ของฉันควรช่วยให้คุณประหยัดเวลา: D โชคดี!
nerdwaller

คุณเขียนว่า "หลัก ๆ แล้วถ้าคีย์ขอรหัสผ่านกุญแจถูกสร้างขึ้นด้วย" <- ใช่แม้ว่าฉันเพิ่งทดสอบสิ่งที่ผู้ถามทำดังนั้นการทำ -i ด้วยรหัสสาธารณะ$ ssh user@comp -i ~/.ssh/id_rsa.pubและมันบอกว่าสิทธิ์ที่ผิดและเป็นส่วนตัว คีย์จะถูกเพิกเฉย .. ดังนั้นฉันจึงเปลี่ยนสิทธิ์เป็น 600 เช่น id_rsa และจะถามรหัสผ่าน ดังนั้นจริง ๆ แล้วมันจะถามวลีรหัสผ่านว่าคุณระบุรหัสสาธารณะแม้ว่าทั้งกุญแจสาธารณะและกุญแจส่วนตัวไม่ได้ถูกสร้างขึ้นด้วยวลีรหัสผ่าน
barlop

2

สำหรับฉันตั้งแต่มีการเข้ารหัสคีย์ฉันทำตามขั้นตอนต่อไปนี้:

  • เริ่ม ssh-agent: $ ssh-agent bash
  • เพิ่มรหัสประจำตัวมาตรฐานให้กับผู้จัดการกุญแจ: $ ssh-add
  • หากคุณต้องการเพิ่มรหัสอื่นให้ทำดังนี้: $ ssh-add /location/of/key

เพื่อตรวจสอบได้ตลอดเวลารายการของคีย์ที่โหลดในปัจจุบัน:

$ ssh-add -l

รายละเอียดเพิ่มเติมสามารถรับได้จากลิงค์นี้


1

ลองhttps://wiki.gentoo.org/wiki/Keychain

มันเป็นแผ่นปิดssh-agentและssh-add

ข้อดี: ไม่จำเป็นต้องป้อนรหัสผ่านซ้ำ ๆ ตราบใดที่คุณไม่รีบูต crontabสามารถนำมาใช้ในการ

มันอาจจะช่วยได้


1

อาจเป็นเพราะคุณใช้ pubkey DSA ซึ่งถูกปิดใช้งานโดยค่าเริ่มต้นใน OpenSSH v7

หากคุณไม่สามารถเปลี่ยนคู่กุญแจวิธีแก้ปัญหาที่เป็นไปได้จะบอก SSH daemon ของคุณที่ webserver.com เพื่อยอมรับประเภทคีย์เหล่านั้นโดยการอัพเดต/etc/ssh/sshd_configหรือเทียบเท่าการเพิ่มบรรทัดต่อไปนี้

PubkeyAcceptedKeyTypes=+ssh-dss

จากนั้นเริ่มบริการใหม่

/etc/init.d/ssh restart                     # or equivalent

0

ใน Mac OSX คุณสามารถเพิ่มไพรเวตคีย์ของคุณเข้ากับ Keychain ได้โดยใช้คำสั่ง:

ssh-add -K /path/to/private_key

หากคีย์ส่วนตัวของคุณถูกเก็บไว้ที่ ~ / .ssh และมีชื่อว่า id_rsa:

ssh-add -K ~/.ssh/id_rsa

คุณจะได้รับแจ้งให้ใส่รหัสผ่านซึ่งจะถูกเก็บไว้ในพวงกุญแจของคุณ


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