Gunakan kunci yang ditentukan dari ssh-agent

11

Sepanjang baris Bagaimana cara memberitahu git kunci pribadi mana yang digunakan? Saya ingin menggunakan kunci ssh tertentu dalam situasi tertentu.

Masalah saya adalah bahwa bahkan ketika saya menentukan '-saya sesuatu' ssh menggunakan kunci dari ssh-agent saya dalam urutan mereka ditambahkan.

Situasi spesifik saya:

  • Saya memiliki dua pengguna github, masing-masing dengan kunci mereka sendiri saya ingin - misalnya melalui ssh-config - untuk setiap klon menentukan kunci mana yang akan digunakan:

    Tuan rumah USER1.git

    Hostname github.com

    User git

    IdentityFile ~ / .ssh / USER1.id_rsa

ssh -vt USER1.git

masih akan menggunakan USER2.id_rsa jika itu adalah kunci yang pertama kali ditambahkan ke ssh-agent.

srist
sumber

Jawaban:

5

Saya akhirnya berhasil:

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
  • Lekukan penting.
  • Lakukan ssh-add -ldan pastikan kedua kunci Anda telah ditambahkan.
    • Salin / tempel setiap jalur dari ssh-add -lke baris yang sesuai ~/.ssh/configuntuk menghindari kesalahan ketik. Jika ada ~/.ssh/configkesalahan ketik pathfile identitas untuk USER1, maka kunci yang salah (kunci USER2) akan digunakan sebagai gantinya.

Saya mendapat instruksi di BitBucket. Mereka harus bekerja untuk GitHub karena satu-satunya perbedaan adalah HostName: http://confluence.atlassian.com/pages/viewpage.action?pageId=271943168#ConfiguringMultipleSSHIdentitiesforGitBashMacOSXLinux-CreateaSSHconfigfile

Untuk membuatnya bekerja di server jauh menggunakan penerusan agen, coba saran @ stijn-hoop di bawah ini (di bagian komentar pada jawaban ini).

dgo.a
sumber
3
Untuk penerusan agen komentar terakhir Anda, lihat jawaban ini: superuser.com/questions/273037/…
Stijn Hoop
1

Gunakan di IdentitiesOnly yesbawah host ini, di .ssh / config.

Cougar
sumber
1
tetapi kemudian tidak akan menggunakan agen dan memaksa saya untuk memasukkan frasa sandi untuk semua koneksi github
svrist
1
Ya, ini cara kerjanya. Anda tidak dapat memilih di antara kunci yang berbeda saat menggunakan ssh-agent. Salah satu caranya adalah dengan memulai beberapa ssh-agent dan beralih di antara mereka baik menggunakan pembungkus yang berbeda untuk operasi github yang berbeda atau hanya beralih di antara ssh-agent (mengubah SSH_AUTH_SOCK)
Cougar
6
Komentar di atas tidak benar - Anda BISA memilih identitas dari ssh-agent Anda. Lihat juga jawaban yang telah saya sebutkan di atas, superuser.com/questions/273037/…
Stijn Hoop
0

Intinya adalah menggunakan file kunci publik di dalam IdentityFiledirektif.

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

Jika kami menentukan kunci pribadi di dalam konfigurasi SSH, agen SSH akan gagal memilih kunci yang tepat jika kunci pribadi dienkripsi.

Pertanyaan serupa tentang stackexchange: https://unix.stackexchange.com/a/495785/264704

ttimasdf
sumber