ใช้คีย์ที่ระบุจาก ssh-agent


11

ตามเส้นทางของวิธีบอก git คีย์ส่วนตัวที่จะใช้? ฉันต้องการใช้คีย์ ssh เฉพาะในสถานการณ์ที่กำหนด

ปัญหาของฉันคือแม้ว่าฉันจะระบุ '-i บางสิ่งบางอย่าง' ssh ใช้คีย์จาก ssh-agent ของฉันตามลำดับที่เพิ่มเข้ามา

สถานการณ์เฉพาะของฉัน:

  • ฉันมีผู้ใช้ github สองคนแต่ละคนมีคีย์ของตัวเองฉันต้องการ - ตัวอย่างเช่นผ่าน ssh-config - สำหรับแต่ละโคลนระบุคีย์ที่จะใช้:

    โฮสต์ USER1.git

    ชื่อโฮสต์ github.com

    ผู้ใช้คอมไพล์

    IdentityFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

จะยังคงใช้ USER2.id_rsa ถ้านั่นคือกุญแจแรกที่เพิ่มไปยัง ssh-agent

คำตอบ:


5

ในที่สุดฉันก็สามารถทำงานได้:

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa
  • เยื้องนับ
  • ทำssh-add -lและตรวจสอบให้แน่ใจว่าได้เพิ่มคีย์ทั้งสองของคุณแล้ว
    • คัดลอก / วางแต่ละพา ธ จากssh-add -lไปยังบรรทัดที่เหมาะสม~/.ssh/configเพื่อหลีกเลี่ยงการพิมพ์ผิด หากมี~/.ssh/configพา ธ identityfile สำหรับ USER1 จะใช้คีย์ผิด (USER2 ของคีย์) แทน

ฉันได้รับคำแนะนำมากกว่าที่ BitBucket พวกเขาควรทำงานกับ GitHub เนื่องจากข้อแตกต่างคือHostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

หากต้องการให้สิ่งนี้ทำงานบนเซิร์ฟเวอร์ระยะไกลโดยใช้การส่งต่อเอเจนต์ลองใช้คำแนะนำของ @ stijn-hoop ด้านล่าง (ในส่วนความคิดเห็นของคำตอบนี้)


3
สำหรับความคิดเห็นล่าสุดของคุณเกี่ยวกับการส่งต่อตัวแทนให้ดูคำตอบนี้: superuser.com/questions/273037//
Stijn Hoop

1

ใช้IdentitiesOnly yesด้านล่างโฮสต์เหล่านี้ใน. ssh / config


1
แต่ก็จะไม่ใช้ตัวแทนและบังคับให้ฉันป้อนข้อความรหัสผ่านสำหรับการเชื่อมต่อ GitHub ทั้งหมด
svrist

1
ใช่นี่คือวิธีการทำงาน คุณไม่สามารถเลือกระหว่างคีย์อื่นเมื่อใช้ ssh-agent วิธีหนึ่งคือการเริ่มต้นหลาย ssh-agent และสลับระหว่างพวกเขาทั้งสองใช้ wrappers ที่แตกต่างกันสำหรับการดำเนินการ github ที่แตกต่างกันหรือเพียงแค่สลับระหว่าง ssh-agent (เปลี่ยน SSH_AUTH_SOCK)
Cougar

6
ความคิดเห็นด้านบนไม่ถูกต้อง - คุณสามารถเลือกข้อมูลประจำตัวจาก ssh-agent ของคุณ ดูคำตอบที่ฉันได้กล่าวไปแล้วข้างต้น superuser.com/questions/273037/…
Stijn Hoop

0

จุดคือการใช้ไฟล์กุญแจสาธารณะภายในIdentityFileคำสั่ง

Host USER1.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER1.id_rsa.pub

Host USER2.git
  User git
  HostName github.com
  IdentityFile ~/.ssh/USER2.id_rsa.pub

หากเราระบุไพรเวตคีย์ภายในการกำหนดค่า SSH เอเจนต์ SSH จะล้มเหลวในการเลือกคีย์ที่ถูกต้องหากคีย์ส่วนตัวถูกเข้ารหัส

คำถามที่คล้ายกันใน stackexchange: https://unix.stackexchange.com/a/495785/264704

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