ฉันจะดึงกุญแจสาธารณะจากกุญแจส่วนตัวของ SSH ได้อย่างไร


444

คีย์ส่วนตัว SSH ที่สร้างขึ้นโดยssh-keygenมีส่วนคีย์สาธารณะ ฉันจะดึงกุญแจสาธารณะนี้จากกุญแจส่วนตัวได้อย่างไร ฉันทำกุญแจสาธารณะของฉันหายและต้องการใส่เนื้อหาของกุญแจสาธารณะนี้ในauthorized_keysไฟล์เซิร์ฟเวอร์และไม่ต้องการสร้างคู่กุญแจใหม่

อีกคำหนึ่ง: ฉันจะสร้างid_rsa.pubไฟล์จากid_rsaไฟล์ได้อย่างไร


pbcopy > ~/.ssh/id_rsa.pubอุ่ย
Nick T

@NickT - pbcopy เป็นคำสั่ง MacOSX นอกจากนี้ยังไม่มีประโยชน์หากคุณรีบูตออกจากระบบหรือคัดลอกสิ่งอื่นไปที่คลิปบอร์ด
jsnfwlr

คำตอบ:


681

ฉันพบคำตอบเกี่ยวกับความผิดพลาดของเซิร์ฟเวอร์: สร้างรหัส SSH สาธารณะจากรหัสส่วนตัวหรือไม่

ตัวเลือกจะ-yแสดงคีย์สาธารณะ:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

หมายเหตุด้านความคิดเห็นของคีย์สาธารณะจะหายไป ฉันมีเว็บไซต์ที่ต้องการความคิดเห็น (Launchpad?) ดังนั้นคุณต้องแก้ไข~/.ssh/id_rsa.pubและต่อท้ายความคิดเห็นในบรรทัดแรกโดยมีช่องว่างระหว่างความคิดเห็นและข้อมูลสำคัญ ตัวอย่างพับลิกคีย์ถูกแสดงด้านล่าง

ssh-rsa AAAA..../VqDjtS5 ubuntu@ubuntu

สำหรับคีย์ที่ถูกเพิ่มในตัวแทน SSH (โปรแกรมที่ทำงานในพื้นหลังและหลีกเลี่ยงความจำเป็นในการป้อนรหัสผ่าน keyfile อีกครั้งซ้ำแล้วซ้ำอีก) คุณสามารถใช้ssh-add -Lคำสั่งเพื่อแสดงรายการกุญแจสาธารณะสำหรับคีย์ที่ถูกเพิ่มเข้าไป ตัวแทน (ผ่านssh-add -l) สิ่งนี้มีประโยชน์เมื่อคีย์ SSH ถูกเก็บไว้ในสมาร์ทการ์ด (และไม่สามารถเข้าถึงไฟล์คีย์ส่วนตัวได้)


1
โปรดทราบว่าไฟล์กุญแจส่วนตัวของคุณ~/.ssh/id_rsaจะต้อง จำกัด ชื่อผู้ใช้ของคุณ ใช้$ sudo chmod 600 ~/.ssh/id_rsaและป้อนข้อมูลประจำตัวของรูทของคุณเพื่อ จำกัด จากนั้นคุณสามารถส่งออกไฟล์กุญแจสาธารณะ มิฉะนั้นคุณจะได้รับคำเตือนเกี่ยวกับไฟล์กุญแจส่วนตัวที่ไม่ จำกัด
Mark Mikofski

12
@MarkMikofski ไม่จำเป็นต้องsudoมีคุณควรจะเป็นเจ้าของคีย์ส่วนตัวแล้ว มิฉะนั้นคุณจะไม่สามารถอ่านได้ตั้งแต่แรก
Lekensteyn

7
@Lekensteyn ขอบคุณแน่นอนคุณพูดถูก! นอกจากนี้ยัง400มีการแนะนำตั้งแต่ไม่จำเป็นต้องเขียนพิมพ์ไฟล์คีย์ส่วนตัว คำสั่งที่ถูกต้องควรเป็น$ chmod 400 ~/.ssh/id_rsa
Mark Mikofski

ความคิดเห็นของรหัสส่วนตัวสูญหาย ดูstackoverflow.com/questions/38290929/…
weberjn

1
@weberjn คีย์ส่วนตัว ( id_rsaไฟล์) ไม่มีความคิดเห็น แต่ความคิดเห็นที่แท้จริงในไฟล์พับลิกคีย์ ( id_rsa.pub) จะหายไป
Lekensteyn

14

นี่เป็นวิธีการแก้ปัญหาเฉพาะสำหรับผู้ใช้ที่ใช้ Windows to SSH ในเครื่องระยะไกลของพวกเขารวมถึงภาพเมฆบน Amazon AWS และ GCE

(Disclaimer)

ฉันเพิ่งใช้โซลูชันนี้เพื่อลงชื่อเข้าใช้รีโมตไปยังอิมเมจ VM ที่ปรับใช้ใหม่บน GCE


เครื่องมือที่ใช้:

  1. PuTTYgen
  2. WinSCP

ขั้นตอนในการดำเนินการ:

  1. สร้างคู่กุญแจสาธารณะ / ส่วนตัวโดยใช้ puttygen
  2. อัพโหลดกุญแจสาธารณะไปยังเซิร์ฟเวอร์ของคุณในคลาวด์หรือที่ตั้งระยะไกล

คำอธิบาย (วิธีการทำ):

  1. สร้างคีย์ / คู่หรือใช้ไพรเวตคีย์ที่มีอยู่:

    หากคุณมีรหัสส่วนตัว:

    เปิด puttygen กดปุ่ม load และเลือกไฟล์ไพรเวตคีย์ (* .pem) ของคุณ

    หากคุณไม่มีคีย์ส่วนตัว:

    • เปิด puttygen
    • เลือกประเภทคีย์ที่ต้องการ SSH2 DSA (คุณอาจใช้ RSA หรือ DSA) ในส่วนพารามิเตอร์ ... และเป็นสิ่งสำคัญที่คุณต้องปล่อยให้ฟิลด์ข้อความรหัสผ่านว่างเปล่า
    • กดสร้างและทำตามคำแนะนำเพื่อสร้างคู่ของคีย์ (สาธารณะ / ส่วนตัว)

    ตัวอย่างการสร้างคีย์รูป

  2. สร้างไฟล์ 'authorized_keys' ใหม่ (พร้อมแผ่นจดบันทึก):

    คัดลอกข้อมูลพับลิกคีย์ของคุณจากส่วน "พับลิกคีย์สำหรับการวางลงในไฟล์ OpenSSH authorized_keys" ของ PuTTY Key Generator และวางข้อมูลคีย์ไปยังไฟล์ "authorized_keys"

    ตรวจสอบให้แน่ใจว่ามีข้อความเพียงบรรทัดเดียวในไฟล์นี้

  3. อัปโหลดคีย์ไปยังเซิร์ฟเวอร์ Linux:

    • เปิด WinSCP
    • เลือกโปรโตคอลไฟล์ SFTP และเข้าสู่ระบบด้วยข้อมูลประจำตัว SSH ของคุณ
    • ในความสำเร็จคุณจะเห็นโครงสร้างไดเรกทอรีหลักที่เครื่องระยะไกลของคุณ

    อัปโหลดไฟล์ authorized_keys ไปยังโฮมไดเร็กทอรีที่เครื่องรีโมต

  4. ตั้งค่าการอนุญาตที่เหมาะสม:

    สร้าง.sshไดเรกทอรี (หากไม่มี)

    คัดลอกauthorized_keysไฟล์ไปยังไดเรกทอรี. ssh (สิ่งนี้จะแทนที่authorized_keysไฟล์ใด ๆ ที่มีอยู่โปรดทราบสิ่งนี้)

    หากมีไฟล์อยู่ให้เพิ่มเนื้อหาของไฟล์นี้ลงในไฟล์ที่มีอยู่

    เรียกใช้คำสั่งเพื่อตั้งค่าการอนุญาต:

    sudo chmod 700 .ssh && chmod 600 .ssh/authorized_keys
    

ตอนนี้คุณจะสามารถ ssh ลงในเครื่องระยะไกลโดยไม่ต้องป้อนข้อมูลประจำตัวทุกครั้ง

อ่านเพิ่มเติม:

  1. การสร้างและอัพโหลดคีย์ SSH ใน Windows

  2. การพิสูจน์ตัวตนโดยไม่ใช้รหัสผ่านโดยใช้ OpenSSH Key, .pem และ. pub


หากไดเรกทอรีบ้านของคุณถูกเข้ารหัสให้ทำเช่นนี้: askubuntu.com/questions/439184/ …
devprashant

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