กุญแจสาธารณะหลายอันสำหรับผู้ใช้หนึ่งคน


55

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

ฉันกำลังทดลองใช้ ssh เพื่อให้เซิร์ฟเวอร์ ssh ใด ๆ ก็ได้ผลสำหรับคำตอบของคุณ

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

โปรดแจ้งให้เราทราบหากฉันไม่ชัดเจน

ขอบคุณ

คำตอบ:


80

คุณสามารถมีปุ่มได้มากเท่าที่คุณต้องการ เป็นการดีที่จะใช้ชุดคีย์ส่วนตัว / สาธารณะแยกต่างหากสำหรับอาณาจักรที่แตกต่างกันเช่นชุดหนึ่งสำหรับใช้ส่วนตัวของคุณหนึ่งชุดสำหรับงานของคุณ ฯลฯ

ขั้นแรกให้สร้างคู่คีย์แยกกันสองตัวหนึ่งอันสำหรับที่บ้านและอีกอันสำหรับที่ทำงาน:

ssh-keygen -t rsa -f ~/.ssh/id_rsa.home
ssh-keygen -t rsa -f ~/.ssh/id_rsa.work

จากนั้นเพิ่มรายการลงใน~/.ssh/configไฟล์ของคุณเพื่อเลือกรหัสที่จะใช้โดยยึดตามเซิร์ฟเวอร์ที่คุณเชื่อมต่อ:

Host home
Hostname home.example.com
IdentityFile ~/.ssh/id_rsa.home
User <your home acct>

Host work
Hostname work.example.com
IdentityFile ~/.ssh/id_rsa.work
User <your work acct>

ถัดไปผนวกเนื้อหาของคุณid_rsa.work.pubไว้~/.ssh/authorized_keysในเครื่องทำงานและทำเช่นเดียวกันกับปุ่มโฮมบนเครื่องที่บ้านของคุณ

จากนั้นเมื่อคุณเชื่อมต่อกับโฮมเซิร์ฟเวอร์คุณใช้รหัสใดคีย์หนึ่งและเซิร์ฟเวอร์งานที่คุณใช้รหัสอื่น

โปรดทราบว่าคุณอาจต้องการเพิ่มคีย์ทั้งสองลงในของคุณssh-agentเพื่อให้คุณไม่ต้องพิมพ์ข้อความรหัสผ่านของคุณตลอดเวลา


สิ่งนี้จะใช้ได้แม้ว่า id_rsa.work.pub และ id_rsa.home.pub ถูกปลูกไว้บนเซิร์ฟเวอร์เครื่องเดียวกันใช่ไหม? เหตุผลก็คือฉันอาจเชื่อมต่อกับเซิร์ฟเวอร์จากคอมพิวเตอร์ที่แตกต่างกันดังนั้นฉันสงสัยว่ามันมีเหตุผลที่จะมีคู่คีย์ที่แตกต่างกันสำหรับคอมพิวเตอร์แต่ละเครื่องแม้ว่าพวกเขาจะเชื่อมต่อกับเซิร์ฟเวอร์ในฐานะผู้ใช้เดียวกัน ขอบคุณ
รัสเซล

2
แน่นอน! ทางฝั่งเซิร์ฟเวอร์ ssh จะตรวจสอบกุญแจสาธารณะทั้งหมดในไฟล์ authorized_keys จนกว่าจะพบการแข่งขัน ดังนั้นคุณสามารถวางคีย์ทั้งหมดในไฟล์ authorized_keys เดียวกันบนเซิร์ฟเวอร์ได้โดยไม่มีปัญหา
Phil Hollenback

@PhilHollenback "ssh จะตรวจสอบกุญแจสาธารณะทั้งหมดในไฟล์ authorized_keys จนกว่าจะพบการแข่งขัน" - คุณหมายถึงมันส่งความท้าทายไปยังไคลเอนต์สำหรับแต่ละคีย์สาธารณะจนกว่าลูกค้าจะพิสูจน์ได้ว่าสามารถถอดรหัสได้หรือไม่ คุณมีการอ้างอิงสำหรับสิ่งนั้นหรือไม่? (สนใจอย่างแท้จริง)
aaa90210

5

มันมีเหตุผลหลายอย่างที่จะต้องมีปุ่มของผู้ใช้หลายคนที่จะไปยังผู้ใช้คนเดียว เหตุผลทั่วไปคือ:

  • การสำรองข้อมูล
  • git (เช่นPush URL: git+ssh://git@git-server/~/repos/MyProject)
  • rsync
  • การเข้าถึงแอปทั่วไป

หากมี homedirs ที่แตกต่างกันคุณสามารถเปลี่ยนพวกเขาต่อคีย์โดยการenvironment="HOME=/home/user1"เตรียมคีย์ของ user1 ในไฟล์ authorized_keys man authorized_keysดู

ลอง YMMV

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