ฉันจะติดตั้งคีย์ส่วนตัว SSH ที่สร้างโดย PuTTYgen ได้อย่างไร


49

ฉันตั้งค่าเซิร์ฟเวอร์ Linux เพื่อยอมรับการเชื่อมต่อจากพีซีที่บ้านของฉันโดยเพิ่มรหัสสาธารณะที่สร้างโดย PuTTYgen ลงในauthorized_keysไฟล์

ตอนนี้ฉันกำลังพยายามเชื่อมต่อกับเครื่องเดียวกัน แต่คราวนี้มาจากเครื่อง Ubuntu อีกเครื่อง ฉันต้องใช้คีย์ส่วนตัวเดียวกัน (ด้วยเหตุผลแปลก ๆ อย่าถาม .. ) และฉันก็ไม่ค่อยเข้าใจวิธีการติดตั้งบนไคลเอนต์ Ubuntu ของฉัน

ฉันต้องแปลงเป็นรูปแบบอื่นหรือไม่?

คำตอบ:


24

ฉันไม่แน่ใจว่ารหัสส่วนตัวของคุณจะทำงานในอูบุนตูหรือไม่ เพียงคัดลอกกุญแจที่จะ/home/yourName/.ssh/ตั้งชื่อเป็นคีย์ส่วนตัวและคีย์สาธารณะเป็นid_rsaid_rsa.pub

หากไม่ได้ผลคุณสามารถสร้าง ssh key-pair ของคุณเองโดยใช้ssh-keygenและคัดลอกพับลิกคีย์ใหม่ไปยังเซิร์ฟเวอร์และ ssh ดังนี้

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

ฉันไม่ได้เล่นกับมัน แต่ฉันได้ยินมาว่า ssh-agent สามารถใช้ในการจัดการ ssh-keys ได้เช่นกัน


3
มันใช้งานได้ใน Ubuntu อย่างไรก็ตามตรวจสอบให้แน่ใจว่าไม่ได้เขียนรหัส id_rsa ที่มีอยู่มากเกินไปหากคุณมีอยู่แล้ว (โดยการคัดลอกคีย์ใหม่ที่ด้านบน) เว้นแต่คุณจะรู้ว่าคุณไม่ได้ใช้รหัสเดิม
David Oneill

5
คำตอบนี้ขาดข้อมูลอย่างสมบูรณ์คุณจะรับid_rsaไฟล์ได้อย่างไร (โดยการแปลงคีย์ใน PuTTYgen)
Martin Prikryl

38

ฉันบังเอิญต้องทำสิ่งนี้ คุณต้องแปลงคีย์เป็นรูปแบบ OpenSSH คำสั่งสำหรับการทำนั่นคือ:

ssh-keygen -i -f puttygen_key > openssh_key

จากนั้นคุณสามารถคัดลอกเนื้อหาของopenssh_keyในไป.ssh/authorized_keysเช่นเดียวกับคีย์ SSH ปกติ

-iตัวเลือกหนึ่งที่บอกssh-keygenจะทำแปลง -fตัวเลือกที่บอกว่าจะหากุญแจสำคัญในการแปลง

ใช้งานได้กับกุญแจที่ไม่ได้เข้ารหัส รหัสสาธารณะไม่ได้เข้ารหัส แต่อาจเป็นรหัสส่วนตัว ฉันไม่แน่ใจว่ามันมีวิธีในการถอดรหัสรหัสส่วนตัวแปลงแล้วเข้ารหัสใหม่ มันอาจจะง่ายกว่าที่จะใช้ปุ่มใหม่ตามที่คำตอบอื่น ๆ แนะนำ (และฉันขอแนะนำให้ใช้ssh-agentแม้ว่าจะเป็นมุมฉากกับปัญหาปัจจุบัน)


1
คำตอบนี้แก้ปัญหาของฉัน ฉันต้องเปลี่ยนกุญแจ ขอบคุณ
leticia

1
วิธีนี้ช่วยแก้ปัญหาเพียงบางส่วนด้วยการแปลงรหัสสาธารณะ ฉันใช้คำตอบของ @ user18617 เพื่อแปลงรหัสส่วนตัวเช่นกัน
ᴠɪɴᴄᴇɴᴛ


@ ÉdouardLopez puttygen_keyควรเป็นกุญแจสาธารณะของคุณไม่ใช่กุญแจส่วนตัว (* .ppk)
endolith

28

Andrew Stacey อธิบายวิธีการแปลงคีย์เป็นรูปแบบ OpenSSH บน Linux

หากคุณต้องการทำสิ่งเดียวกันบน Windows ให้ทำตามขั้นตอนเหล่านี้:

  1. เริ่ม PuTTYGen
  2. คลิกที่ "โหลด"
  3. เลือกรหัสส่วนตัวของคุณและป้อนวลีรหัสผ่าน
  4. จากเมนู 'การแปลง' ให้เลือก "ส่งออกคีย์ OpenSSH"
  5. เลือกชื่อไฟล์ปลายทาง

1
ฉันแค่อยากจะบอกว่าสิ่งนี้ใช้ได้กับฉันใน Mac OS X ของฉันแม้ว่าฉันจะรู้ว่านี่เป็นส่วนของ Ubuntu ฉันแปลงคีย์ส่วนตัวที่สร้างขึ้นใน Windows ตามที่อธิบายข้างต้นแล้วคัดลอกมันใน mac ของฉันเป็น ~ / .ssh / id_rsa chmod id_rsa 600 เพื่อป้องกันไม่ให้ Mac บ่นเกี่ยวกับเรื่องนี้
Richard

24

วิธีใช้ Putty Key คู่ของคุณใน Ubuntu เป็นคีย์ OpenSSH อีกครั้ง:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

เนื่องจากจุดประสงค์ของขั้นตอนที่ 4 คือการเพิ่มกุญแจสาธารณะของคุณไปที่ * ~. / ssh / authorized_keys * ดังนั้นคุณสามารถใช้รหัสลับ Putty ของคุณเช่นนี้แทนที่จะทำ 4 เป็นขั้นตอนกลาง:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys

1
เกี่ยวกับขั้นตอนที่ 4: หากชื่อคีย์ส่วนตัวคือ mykey-sec.ppk ชื่อไฟล์ต้นฉบับในกรณีนี้มักจะเป็น mykey-sec.pub
Kinjal Dixit

2
การตั้งชื่อกุญแจสาธารณะ (น่าจะเป็นในรูปแบบ RFC 4716) mykey-pub.ppkค่อนข้างสับสนเนื่องจาก.ppkไฟล์นั้นมีรูปแบบที่แตกต่างไปจากเดิมอย่างสิ้นเชิงและใช้สำหรับคู่กุญแจ (ไม่ใช่แค่กุญแจสาธารณะ)
Martin Prikryl

บรรทัด puttygen สุดท้ายนั้นทำงานได้อย่างสมบูรณ์แบบสำหรับฉันหลังจากติดตั้ง putty-tools บนเดเบียน 9 บรรทัดและคำตอบอื่น ๆ ที่นี่ไม่ทำงาน
ทิม

วิจิตรพิสดารผมได้รับputtygen: unknown output type `private‐openssh'และputtygen: cannot handle more than one input fileดังนั้นผมจึงคัดลอกแน่นอนตัวละครจากรหัสที่มาและเปลี่ยนชื่อคีย์สาธารณะของฉันไปที่สิ่งอื่นทั้งหมด
CPHPython

ถ้าคุณพยายามเรียกใช้คำสั่งในคำตอบนี้และรับ "puttygen: ไม่สามารถจัดการกับไฟล์อินพุตมากกว่าหนึ่งไฟล์" ได้อาจเป็นเพราะตัวอักขระขีดกลางใน "private ‐ openssh" ไม่ได้ถูกวางในรูปแบบ ASCII จริง ดังนั้น puttygen จึงไม่รู้จัก ให้พิมพ์คำนั้นออกมาด้วยตัวเองและควรใช้งานได้
สไตล์ของแมตต์

9

PuTTY / PuTTYgen ใช้รูปแบบคู่ที่เป็นกรรมสิทธิ์ของตนเอง มันจะไม่ทำงานบน Linux ที่รูปแบบของคีย์ OpenSSH เป็นหลัก

  • ใน PuTTYgen คุณสามารถดู (และคัดลอก + วาง) กุญแจสาธารณะในรูปแบบที่ใช้โดยauthorized_keysไฟล์OpenSSH โดยตรง

  • คุณสามารถใช้ปุ่มบันทึกกุญแจสาธารณะเพื่อบันทึกกุญแจสาธารณะใน.pubรูปแบบ (RFC 4716) บน Linux ไฟล์นี้ชื่อid_rsa.pub(หรือid_dsa.pub) แต่โดยทั่วไปไม่จำเป็น

  • ใช้การแปลง> ส่งออกคีย์ OpenSSHเพื่อส่งออกคีย์ส่วนตัวในรูปแบบ OpenSSH บน Linux ไฟล์นี้ชื่อid_rsa(หรือid_dsa) และเก็บไว้ใน.sshโฟลเดอร์

ดูอย่างเป็นทางการใช้ PuTTYgen, เครื่องกำเนิดไฟฟ้าที่สำคัญฉาบ

คุณยังสามารถใช้ PuTTYgen เวอร์ชัน Linux เพื่อทำการแปลงได้ รุ่น Linux เป็นบรรทัดคำสั่งตรงกันข้ามกับรุ่น Windows

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

ดูลินุกซ์หน้าคนputtygen


2

ฉันพบวิธีแก้ปัญหาที่ชัดเจนกว่านี้

เมื่อputtygenสร้างคีย์แล้วไปที่เมนูด้านบน - การแปลงและคลิกส่งออกคีย์ openssh

เนื้อหาไฟล์จะเริ่มต้นและสิ้นสุดด้วย

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • สำหรับผู้ใช้รูทคัดลอกไฟล์คีย์นั้นไป/root/.ssh/เป็นid_rsaหรือid_dsa

  • สำหรับผู้ใช้รายอื่นคัดลอกไฟล์คีย์นั้นไป/home/user/.ssh/เป็นid_rsaหรือid_dsa

บันทึก :

  1. authorized_keysไม่จำเป็นต้องแก้ไข
  2. ฉันใช้ amazon linux
  3. สิทธิ์การใช้ไฟล์ 0600

1

* *ระวังและให้แน่ใจว่าคุณมีสิทธิ์เข้าใช้กล่องเพราะถ้าคุณทำไม่ถูกต้องคุณจะไม่สามารถ ssh อีกครั้งจนกว่าคุณจะแก้ไขจากคอนโซล

กระบวนการนี้ง่ายกว่าที่คุณคิด โหลดคู่กุญแจสาธารณะ / ส่วนตัวที่คุณสร้างใน puttygen อีกครั้ง ใน puttygen คุณจะสังเกตเห็นหน้าต่างตรงกลางของหน้าจอที่ระบุว่า: "คีย์สาธารณะสำหรับการวางลงในไฟล์ Open SSH authorized_keys:"

เน้นเนื้อหาทั้งหมดของกล่องและกด control-c เพื่อคัดลอก

SSH ลงในกล่อง linux ของคุณและวางลงในไฟล์ "/home/username/.ssh/authorized_keys" ฉันชอบที่จะใช้นาโนและเพียงคลิกขวาเพื่อวางมันตรวจสอบให้แน่ใจว่ามันอยู่ในบรรทัดเดียว

แก้ไขไฟล์ / etc / sshd_config ของคุณตามต้องการและรีสตาร์ทเซอร์วิส sshd ของคุณ: "service ssh restart"

หากคุณต้องการไฟล์ตัวอย่าง sshd_config แจ้งให้เราทราบและฉันสามารถโพสต์ของฉัน

ฉันทำสิ่งนี้บน Ubuntu 8.04, 10.04 และ 12.04 LTS เซิร์ฟเวอร์แล้วมันก็ลื่นไหล


0

ฉันไม่แน่ใจว่าเธรดนี้ยังทำงานอยู่หรือไม่ แต่ฉันพบปัญหาที่คล้ายกันกับ Windows 10 ฉบับครบรอบซึ่งสนับสนุนเคอร์เนล Ubuntu ฉันเคยใช้ Putty มาก่อนเพื่อเชื่อมต่อกับเครื่อง Linux สำหรับการสร้าง id_rsa ในรูปแบบ linux ให้ใช้ puttykeygen และโหลดคีย์ส่วนตัวของคุณ putty จากนั้นคลิกที่การแปลงและเลือกตัวเลือกที่สอง

การประชุม Putty KeyGenerator

เปิดไฟล์คีย์ที่สร้างขึ้นใหม่และคัดลอกเนื้อหาทั้งหมดตรวจสอบให้แน่ใจว่าเนื้อหาของคุณเริ่มต้นด้วย: ----- BEGIN คีย์ส่วนตัว RSA -----และลงท้ายด้วย----- สิ้นสุดคีย์ส่วนตัว RSA -----

vi id_rsa ในไดเรกทอรี ~ / .ssh ของคุณและวางเนื้อหาที่คัดลอกนี่เป็นสิ่งจำเป็นเนื่องจาก linux ไม่เช่นนั้นจะไม่เข้าใจเนื้อหาของไฟล์

นั่นคือทั้งหมดลอง ssh ไปยังเซิร์ฟเวอร์ระยะไกลมันควรจะทำงาน

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