Saya ingin menggunakan beberapa kunci pribadi untuk terhubung ke server yang berbeda atau bagian yang berbeda dari server yang sama (penggunaan saya adalah administrasi sistem server, administrasi Git, dan penggunaan Git normal dalam server yang sama). Saya mencoba hanya menumpuk kunci dalam id_rsa
file tetapi tidak berhasil.
Tampaknya cara mudah untuk melakukan ini adalah dengan menggunakan perintah
ssh -i <key location> [email protected]
Itu cukup merepotkan.
Ada saran tentang bagaimana cara melakukan ini sedikit lebih mudah?
Jawaban:
Dari saya
.ssh/config
:Dan seterusnya.
sumber
IdentityFile
entri untuk hal yang samaHost
, yang kemudian dicoba secara berurutan saat menghubungkan.IdentitiesOnly yes
untuk mencegah ~ / .ssh / id_rsa atau identitas lainnya. (Ini awalnya suntingan)Anda dapat menginstruksikan ssh untuk mencoba beberapa tombol secara berurutan saat menghubungkan. Begini caranya:
Dengan cara ini Anda tidak perlu menentukan kunci apa yang berfungsi dengan server mana. Itu hanya akan menggunakan kunci kerja pertama.
Anda juga hanya akan memasukkan frasa sandi jika server yang diberikan bersedia menerima kunci. Seperti yang terlihat di atas ssh tidak mencoba untuk meminta kata sandi
.ssh/id_rsa
bahkan jika ada.Tentunya itu tidak mengalahkan konfigurasi per-server seperti pada jawaban lain, tetapi setidaknya Anda tidak perlu menambahkan konfigurasi untuk semua dan setiap server yang Anda hubungkan!
sumber
The jawaban dari Randal Schwartz hampir membantu saya sepanjang jalan. Saya memiliki nama pengguna yang berbeda di server, jadi saya harus menambahkan kata kunci Pengguna ke file saya:
Sekarang Anda dapat terhubung menggunakan nama ramah:
Lebih banyak kata kunci dapat ditemukan di halaman manual OpenSSH . CATATAN: Beberapa kata kunci yang tercantum mungkin sudah ada di file / etc / ssh / ssh_config Anda .
sumber
Jawaban sebelumnya telah menjelaskan cara membuat file konfigurasi dengan benar untuk mengelola beberapa kunci ssh. Saya pikir, hal penting yang juga perlu dijelaskan adalah penggantian nama host dengan nama alias saat kloning repositori .
Misalkan, nama pengguna akun GitHub perusahaan Anda adalah abc1234 . Dan anggaplah nama pengguna akun GitHub pribadi Anda adalah jack1234
Dan, misalkan Anda telah membuat dua kunci RSA, yaitu id_rsa_company dan id_rsa_personal . Jadi, file konfigurasi Anda akan terlihat seperti di bawah ini:
Sekarang, ketika Anda mengkloning repositori (bernama demo) dari akun GitHub perusahaan, URL repositori akan menjadi seperti:
Sekarang, sambil melakukan
git clone
, Anda harus memodifikasi URL repositori di atas sebagai:Perhatikan bagaimana github.com sekarang diganti dengan alias "perusahaan" seperti yang telah kita tentukan dalam file konfigurasi.
Sama halnya, Anda harus memodifikasi URL klon dari repositori di akun pribadi tergantung pada alias yang disediakan dalam file konfigurasi.
sumber
Pastikan Anda mengujinya sebelum menambahkan dengan:
Jika Anda memiliki masalah dengan kesalahan terkadang mengubah keamanan file membantu:
sumber
Hasilkan kunci SSH:
Buat kunci SSH lain :
Sekarang, dua kunci publik ( id_rsa.pub , accountB.pub ) harus ada di
~/.ssh/
direktori.Buat file konfigurasi
~/.ssh/config
dengan konten berikut:Klon dari
default
akun.Klon dari
accountB
akun.Lihat Lebih Banyak Di Sini
sumber
Saya setuju dengan Tuomas tentang menggunakan ssh-agent. Saya juga ingin menambahkan kunci pribadi kedua untuk bekerja dan tutorial ini berfungsi seperti pesona bagi saya.
Langkah-langkahnya adalah sebagai berikut:
$ ssh-agent bash
$ ssh-add /path.to/private/key
misalnyassh-add ~/.ssh/id_rsa
$ ssh-add -l
$ssh -v <host url>
misalnyassh -v [email protected]
sumber
ssh-agent
selama bertahun-tahun, saya baru saja beralih menggunakan Gnomegnome-keyring
dalami3
wm saya . Alasannya sederhana: Manajer Keyring Gnome secara otomatis menangani menambah dan menghapus kunci ssh tanpa harus saya ingatssh-add
. Selain itu memberi saya satu kata sandi untuk membukanya (dan batas waktu pada waktu yang ditentukan, untuk keamanan). Untuk masing-masing miliknya. Karena saya menggunakan pengaturan gnome di Arch, itu plug and play dengan setup saya. Jika Anda anti-gnome, abaikan komentar ini.Saya telah mengalami masalah ini beberapa waktu lalu, ketika saya memiliki dua akun Bitbucket dan ingin harus menyimpan kunci SSH yang terpisah untuk keduanya. Inilah yang bekerja untuk saya.
Saya membuat dua konfigurasi ssh terpisah sebagai berikut.
Sekarang ketika saya harus mengkloning repositori dari akun kantor saya - perintahnya adalah sebagai berikut.
Saya harus mengubah perintah ini menjadi:
Demikian pula perintah klon dari akun pribadi saya harus dimodifikasi
Lihat tautan ini untuk informasi lebih lanjut.
sumber
Gunakan ssh-agent untuk kunci Anda.
sumber
Sekarang, dengan Git versi terbaru, kita dapat menentukan sshCommand di file konfigurasi Git khusus repositori:
sumber
Anda dapat membuat file konfigurasi dengan nama
config
di~/.ssh
folder Anda . Ini dapat berisi:Ini akan memungkinkan Anda untuk terhubung ke mesin seperti ini
sumber
PENTING: Anda harus memulai ssh-agent
Anda harus memulai ssh-agent (jika belum berjalan) sebelum menggunakan ssh-add sebagai berikut:
Perhatikan bahwa perintah eval memulai agen pada Git Bash pada Windows. Lingkungan lain dapat menggunakan varian untuk memulai agen SSH.
sumber
Di Ubuntu 18.04 (Bionic Beaver) tidak ada yang bisa dilakukan.
Setelah berhasil membuat kunci SSH kedua dengan sukses, sistem akan mencoba menemukan kunci SSH yang cocok untuk setiap koneksi.
Untuk lebih jelasnya, Anda dapat membuat kunci baru dengan perintah-perintah ini:
sumber
Beberapa pasangan kunci di GitHub
File konfigurasi SSH 1.0
1.1 Buat ~ / .ssh / config
1.2 chmod 600 ~ / .ssh / config ( harus )
1.3 Masukkan yang berikut ke dalam file:
Kasus A: Klon Git baru yang segar
Gunakan perintah ini untuk klon Git:
Catatan: Jika Anda ingin mengubah nama host "pizza" .ssh / config di masa mendatang, buka folder Git yang dikloning, edit baris file URL .git / config (lihat huruf B)
Kasus B: Sudah memiliki folder klon Git
2.1 Buka folder yang dikloning, dan kemudian masuk ke folder .git
2.2 Edit file konfigurasi
2.3 Perbarui URL dari * lama ke baru :
sumber
Bagi saya, satu-satunya solusi yang berfungsi adalah dengan menambahkan ini dalam file
~/.ssh/config
:your_ssh_key
tanpa ekstensi apa pun. Jangan gunakan.pub
.sumber
Pada CentOS 6.5 menjalankan OpenSSH_5.3p1 dan OpenSSL 1.0.1e-fips, saya memecahkan masalah dengan mengganti nama file kunci saya sehingga tidak ada yang memiliki nama default.
Direktori .ssh saya berisi id_rsa_foo dan id_rsa_bar, tetapi tidak ada id_rsa, dll.
sumber
-i
opsi dapat menghasilkan sesuatu sepertino such identity: /home/embo/.ssh/id_rsa: No such file or directory
.Seperti yang disebutkan di halaman blog Atlassian , buat file config di dalam folder .ssh , termasuk teks berikut:
Kemudian Anda cukup checkout dengan domain suffix dan dalam proyek Anda dapat mengkonfigurasi nama penulis, dll secara lokal.
sumber
Inilah solusi yang saya gunakan terinspirasi dari jawaban sajib-khan . Konfigurasi default tidak diatur; ini akun pribadi saya di GitLab dan yang lainnya ditentukan adalah akun perusahaan saya. Inilah yang saya lakukan:
Hasilkan kunci SSH
Edit konfigurasi SSH
Hapus kunci SSH yang di-cache
Menguji!
Gunakan!
Akun perusahaan
Akun pribadi / default
Berikut adalah sumber yang saya gunakan.
sumber
Saya suka pendekatan untuk mengatur yang berikut ini di file ~ / .ssh / config:
Kemudian di repositori Anda, Anda dapat membuat
.env
file yang berisissh
perintah yang akan digunakan:Jika Anda kemudian menggunakan misalnya dotenv variabel lingkungan lingkungan diekspor secara otomatis dan teriakan teriakan, Anda dapat menentukan kunci yang Anda inginkan per proyek / direktori. Frasa sandi hanya diminta satu kali karena ditambahkan ke gantungan kunci.
Solusi ini bekerja sempurna dengan Git dan dirancang untuk bekerja pada Mac (karena
UseKeychain
).sumber
Anda dapat mencoba paket sshmulti npm ini untuk mempertahankan beberapa kunci SSH.
sumber