ฉันจะเพิ่มรหัสผ่านไปยังรหัสส่วนตัว OpenSSH ที่สร้างขึ้นโดยไม่มีรหัสผ่านได้อย่างไร


213

ฉันสร้างคีย์ส่วนตัว OpenSSH โดยใช้ puttygen (และส่งออกในรูปแบบ OpenSSH) ฉันจะใส่รหัสผ่านในคีย์ที่มีอยู่นี้ได้อย่างไร (ฉันรู้วิธีสร้างรหัสใหม่ด้วยรหัสผ่าน)


13
หากคุณเห็นความคิดเห็นนี้โปรดทำเครื่องหมายคำตอบหนึ่งข้อให้เป็นที่ยอมรับหรือเขียนความคิดเห็นโดยระบุว่าพวกเขาพลาดอะไรไป ขอบคุณ!
Benjamin Atkin

1
เพิ่มเหมือนกับการเปลี่ยนแปลงหรือลบ: stackoverflow.com/questions/112396/ … , เป็นไปได้เดียวกันสำหรับการเปลี่ยนแปลง: serverfault.com/questions/50775/ …
Ciro Santilli 郝海东冠状病病事件法轮功

ถ้าคุณได้รับBad passphraseในid_ed25519ที่สำคัญ แต่รหัสผ่านที่ถูกต้องแล้วคุณอาจจะใช้ระดับssh-keygenจะจัดการกับมัน
jww

คำตอบ:


350

ลองคำสั่ง ssh-keygen -p -f keyfile

จากหน้า ssh-keygen

 -p      Requests changing the passphrase of a private key file instead of
         creating a new private key.  The program will prompt for the file
         containing the private key, for the old passphrase, and twice for
         the new passphrase.

 -f filename
         Specifies the filename of the key file.

ตัวอย่าง:

ssh-keygen -p -f ~/.ssh/id_rsa

5
สำหรับผู้ที่ต้องการทราบว่า -f คืออะไร: มันระบุไฟล์อินพุต
Neikos

4
//, @sigjuice, คุณช่วยโพสต์ตัวอย่างได้$ ssh-keygen -p -f /Users/sigjuice/.ssh/id_rsaไหม? นี่อาจช่วยให้ผู้ที่ไม่รู้วิธีบอกความแตกต่างระหว่างกุญแจสาธารณะและกุญแจส่วนตัวและช่วยให้เท้าของพวกเขาเปียกเร็วขึ้น
Nathan Basanese

ด้วยเหตุผลบางอย่างใน MacOS 10.14 สิ่งนี้จะไม่ฟอร์แมตไฟล์ด้วยProc-Type: 4,ENCRYPTEDส่วนหัวซึ่งเข้ากันไม่ได้กับบางแอพพลิเคชั่นที่ทำการตรวจสอบข้อความรหัสผ่าน หลังจากพยายามหลายวิธีเพื่อให้มันทำงานได้วิธีที่ง่ายที่สุดในการแก้ไขมันก็แค่ทำสิ่งเดียวกันภายใน Docker container ที่ใช้ Ubuntu แล้วคัดลอกคีย์กลับไปที่ Mac ของฉัน
ไรอันเบรนนา

38

ใช้อ็อพชัน -p เพื่อ ssh-keygen สิ่งนี้ช่วยให้คุณสามารถเปลี่ยนรหัสผ่านได้แทนที่จะสร้างรหัสใหม่

เปลี่ยนรหัสผ่านเมื่อ sigjuice แสดง:

ssh-keygen -p -f ~/.ssh/id_rsa

รหัสผ่านที่ต้องการจะเป็นรหัสผ่านใหม่ (นี่ถือว่าคุณได้เพิ่มกุญแจสาธารณะ~/.ssh/id_rsa.pubให้กับไฟล์ authorized_keys ของคุณ) ทดสอบด้วย ssh:

ssh -i ~/.ssh/id_rsa localhost

คุณสามารถมีหลายปุ่มที่มีชื่อแตกต่างกันสำหรับการใช้งานที่แตกต่างกัน


//, คุณช่วยกรุณาแสดงตัวอย่างและวิธีตรวจสอบว่าตัวเลือกใช้งานได้หรือไม่ @BillThor?
Nathan Basanese

ฉันไม่เข้าใจ. ข้อความรหัสผ่านถูกตั้งค่าฉันเห็นเมื่อฉันพยายามที่จะเปลี่ยนอีกครั้ง แต่เมื่อฉันพยายามที่จะเข้าสู่เซิร์ฟเวอร์ระยะไกลก็ไม่ถามรหัสผ่านรหัสผ่านนี้ทำไม?
Luka

1
ทุกอย่างปกติดี. มันถามหนึ่งครั้งต่อเซสชัน :) ไม่รู้ว่า
Luka

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

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

3

คุณยังสามารถใช้openssl:

openssl rsa -aes256 -in ~/.ssh/your_key -out ~/.ssh/your_key.enc
mv ~/.ssh/your_key.enc ~/.ssh/your_key
chmod 600 ~/.ssh/your_key

ดู: https://security.stackexchange.com/a/59164/194668


ฉันคิดว่าฉันจะใช้วิธีssh-keygen ;)
Michael P. Bazos

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