ฉันจะโอนกุญแจ SSH ไปยังเครื่องอื่นได้อย่างไร?


42

ฉันมีบัญชีสองเครื่อง: H1 และ H2 ฉันสร้างคีย์ ssh บน H1 และติดตั้งบน S1 ตอนนี้ฉันสามารถ ssh ถึง S1 จาก H1 ฉันต้องการทำสิ่งเดียวกันจาก H2 ฉันจะติดตั้งคีย์ ssh ที่สร้างขึ้นบน H1 บน H2 ได้อย่างไร


2
เนื่องจากssh-copy-idเป็นข้อพิสูจน์ที่โง่กว่า (ไม่มีการเขียนทับคีย์ที่มีอยู่หรือคัดลอกคีย์ส่วนตัวโดยไม่ได้ตั้งใจแทนที่จะเป็นกุญแจสาธารณะ ) และวิธีการแก้ปัญหาที่รู้จักน้อยกว่าโปรดพิจารณาตอบหนึ่งในคำตอบที่ได้รับการยอมรับ
ทุก

คำตอบ:


28

แก้ไข: หากคุณเป็นเจ้าของทั้งสองเครื่องคุณสามารถแบ่งปันรหัสส่วนตัวของคุณ แต่วิธีนี้ไม่ปลอดภัยสำหรับกรณีของโน้ตบุ๊กที่ถูกขโมยหรือสำหรับเครื่องที่คุณไม่ได้เป็นเจ้าของ

คุณสามารถคัดลอกคีย์ส่วนตัวของคุณจาก H1 ถึง H2 หากคุณต้องการใช้ไพรเวตคีย์เดียวกันเพื่อให้สามารถเข้าสู่ระบบจาก H2 ถึง S1 เมื่อคุณอยู่ที่ H1 ทำคำสั่ง:

H1$ ssh H2 mkdir ~/.ssh
H1$ scp  ~/.ssh/id_rsa ~/.ssh/id_dsa H2:~/.ssh/

คำเตือน! นี่จะเป็นการลบและแทนที่ไพรเวตคีย์ที่คุณมีที่ H2

วิธีที่ดีกว่าคือการสร้างไพรเวตคีย์ใหม่บน H2 ( ssh-keygen) และติดตั้งส่วนสาธารณะใน S1 ด้วยssh-copy-idutil ในกรณีที่ปลอดภัยกว่านี้คุณจะมีกุญแจสองชุด หนึ่งคือสำหรับการเข้าสู่ระบบ H1-S1 และที่สองสำหรับการเข้าสู่ระบบ H2-S1 จะมีกุญแจสาธารณะสองอันที่ได้รับอนุญาตที่ S1 และคุณจะสามารถเพิกถอนสิ่งใดสิ่งหนึ่งหรือทั้งสองอย่าง (ตัวอย่างเช่นเมื่อสมุดบันทึกของคุณถูกขโมยหรือเจ้าของเครื่องตัดสินใจที่จะปิดการใช้งานบัญชีของคุณและนำไฟล์ทั้งหมดของคุณกลับมาใช้ใหม่)


8
การคัดลอกคีย์ส่วนตัวไม่ใช่ความคิดที่ดี การมีคีย์เดียวในหลาย ๆ ที่1.ทำให้มีความเสี่ยงมากขึ้น2.เพิ่มความเสี่ยงที่คุณสูญเสียการควบคุมสถานที่ทั้งหมด3.ไม่อนุญาตให้คุณปิดการเข้าถึงจากที่เดียว จากมุมมองด้านความปลอดภัยคุณควรสร้างคู่คีย์ใหม่ในทุกตำแหน่ง - โซลูชันจาก Mu Qiao
pabouk

27

ใช้ ssh-copy-id

สรุป

ssh-copy-id [-i [identity_file]] [user @]

รายละเอียด

ssh-copy-id เป็นสคริปต์ที่ใช้ ssh เพื่อเข้าสู่เครื่องระยะไกลและผนวกไฟล์ข้อมูลประจำตัวที่ระบุไปยังไฟล์ ~ / .ssh / authorized_keys ของเครื่องนั้น


1
@ ฉันต้องการทำ ssh จาก H2 ถึง S1 ฉันต้องการถ่ายโอนและติดตั้งรหัสส่วนตัวและสาธารณะจาก H1 ถึง H2 จะทำเช่นนี้?
บรูซ

3
@ ไม่มีเลขหมายคุณต้องสร้างคีย์ใหม่บน h2 และใช้คำสั่งนั้นเพื่อคัดลอกคีย์ของคุณ อีกวิธีหนึ่งคือการให้ h1 และ h2 แบ่งปันโฮมไดเรกทอรี
Mu Qiao

9

ใช้กุญแจส่วนตัวสองอัน

ตั้งค่า H2 โดยใช้กระบวนการเดียวกัน (แต่ไม่ใช่คีย์ส่วนตัวเดียวกัน) เหมือนกับที่คุณทำเมื่อตั้งค่า H1:

  • ไม่มีเหตุผลที่ดีที่จะคัดลอกคีย์ส่วนตัวจากเครื่องอื่น หากคุณยังไม่ได้สร้างคีย์ส่วนตัวใหม่ใน H2 ให้ทำทันที สร้างคีย์สาธารณะที่เกี่ยวข้องด้วย ในอาคารผู้โดยสารบน H2

พิมพ์: ssh-keygen -t rsa

  • คัดลอกกุญแจสาธารณะของ H2 ของคุณไปยังเซิร์ฟเวอร์ ในอาคารผู้โดยสารบน H2

พิมพ์: ssh-copy-id username@S1.net

(แต่ใช้ชื่อผู้ใช้จริงของคุณในชื่อโฮสต์ของ S1 และ S1 จากนั้นพิมพ์รหัสผ่านของคุณใน S1 เมื่อมีการขอ)

สิ่งนี้จะติดตั้งพับลิกคีย์ของเวิร์กสเตชันของคุณลงใน~/.ssh/authorized_keysไฟล์สำหรับผู้ใช้บนเซิร์ฟเวอร์

  • ไม่มีขั้นตอนที่ 3 จากนี้ไปคุณสามารถเข้าสู่ S1 จาก H2 ของคุณและเข้าสู่ S1 จาก H1 ของคุณ

รายละเอียด

ฉันคิดว่าสิ่งที่คุณถามจริงๆคือ

  • ฉันมีเซิร์ฟเวอร์ ("S1")
  • ฉันเข้าสู่เซิร์ฟเวอร์ของฉันจากแล็ปท็อปส่วนตัวของฉัน ("H1")
  • ฉันต้องการลงชื่อเข้าใช้เซิร์ฟเวอร์ของฉันจากเวิร์กสเตชัน ("H2")

วิธีที่ถูกต้องในการทำเช่นนั้นคืออะไร?

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

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

ระบบกุญแจสาธารณะเช่น ssh นั้นดีกว่าระบบรหัสผ่าน: บัญชีหนึ่งบัญชีบนเซิร์ฟเวอร์มีชื่อผู้ใช้เดียวและกุญแจสาธารณะที่ได้รับอนุญาตจำนวนมากซึ่งทั้งหมดนี้มีอยู่ใน~/.ssh/authorized_keysไฟล์

( รายละเอียดเพิ่มเติม )


ยกโทษให้ฉันสำหรับการทำซ้ำตัวเอง
David Cary

0

ssh-copy-id จะทำงานให้คุณ: http://linux.die.net/man/1/ssh-copy-idหรือไม่


@ ฉันต้องการทำ ssh จาก H2 ถึง S1 ฉันต้องการถ่ายโอนและติดตั้งรหัสส่วนตัวและสาธารณะจาก H1 ถึง H2 จะทำเช่นนี้?
บรูซ

2
หากคุณลงชื่อเข้าใช้ S1 หรือ H1 (ซึ่งตอนนี้มีรหัสของคุณ) โดยใช้ ssh-copy-id จะช่วยให้คุณสามารถโอนกุญแจสาธารณะของคุณ (ไม่ใช่ส่วนตัว) ไปยัง H2 โดยทั่วไปจะเป็นการดีที่สุดที่จะ จำกัด จำนวนเครื่องที่ติดตั้งรหัสส่วนตัวของคุณ พยายามเก็บไว้ในเครื่องที่ปลอดภัยเพียงไม่กี่เครื่องเท่านั้นเพื่อป้องกันการสูญหาย

ฉันจะคัดลอกรหัสส่วนตัวของฉันไปยัง H2 ได้อย่างไร
บรูซ

0

สำหรับการเปลี่ยนคีย์ SSH จากคอมพิวเตอร์เครื่องหนึ่งไปอีกเครื่องหนึ่ง เพียงคัดลอกโฟลเดอร์ทั้งหมดจาก ~ / .ssh จาก H1 (เครื่องเก่า) ไปยังโฟลเดอร์เนื้อหา ~ / .ssh ของเครื่องใหม่ H2

ตอนนี้ลอง:

ssh ubuntu@13.123.43.26 (IP S1 ของคุณ)

ส่วนใหญ่คุณจะได้รับคำเตือนเรื่องสิทธิ์ในการแก้ไขปัญหา

chmod 400 ~ / .ssh / id_rsa

ตอนนี้อีกครั้ง:

ssh ubuntu@13.123.43.26 (IP S1 ของคุณ)

มันจะทำงานได้ดีในขณะนี้

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