Belirli bir alan için git push için bir SSH anahtarı belirtin
Aşağıdaki kullanım durumum var: gitolite-admin özel anahtarını kullanarak [email protected]: gitolite-admin adresine basabilmek istiyorum iken, "kendi" özel anahtarımı kullanarak [email protected]: some_repo adresine geçmek istiyorum. AFAIK, ~/.ssh/config kullanarak bunu çözemiyorum çünkü her iki durumda da kullanıcı adı ve sunucu adı aynıdır. Daha çok kendi özel anahtarımı kullandığım için, [email protected] için ~/.ssh/config olarak tanımladım. Tek bir git çağrısı için kullanılan anahtarı geçersiz kılmanın bir yolu var mı?
(Bir kenara: Gitolit, anahtarı temel alan itici güçleri ayırt eder, bu yüzden erişim, sahip olma ve denetleme açısından sorun değil, kullanıcı @ sunucu dizesi farklı kullanıcılar için aynıdır.)
Mark Longair tarafından sunulan bir alternatif yaklaşım, herhangi bir git komutunu, herhangi bir uzaktan, alternatif SSH anahtarı ile. Fikir, git komutlarını çalıştırırken temel olarak SSH kimliğinizi değiştirmek içindir.
Diğer cevapta host alias yaklaşımına göre avantajlar:
Uzaktan açık bir şekilde belirtilemiyor olsanız bile herhangi bir git komutuyla veya diğer adlarla çalışacaktır.
Çok sayıda depo ile çalışmanın daha kolay olması, çünkü her istemci bilgisayarında depo başına bir kez değil, yalnızca istemci makinesinde bir kez ayarlamanız gerekir.
Birkaç küçük komut dosyası ve bir admin Git takma adları kullanıyorum. Bu şekilde yapabileceğim, örneğin:
git admin push
Alternatif ("admin") SSH anahtarını kullanarak varsayılan uzaktan kumandaya geçmek için. Yine, bu takma adla herhangi bir komutu (sadece push ) kullanabilirsiniz. Hatta "admin" anahtarınızı kullanarak erişebileceğiniz bir depoyu klonlamak için admin clone ... komutunu da yapabilirsiniz.
Step 1: Create the alternative SSH keys, optionally set a passphrase in case you're doing this on someone else's machine.
Step 2: Create a script called “ssh-as.sh” that runs stuff that uses SSH, but uses a given SSH key rather than the default:
Geçerli çalışma dizininize, ssh seçeneklerine ve benzerlerine göre farklı anahtarları otomatik olarak yükler ve kullanır. Bu sayede, ssh ile farklı anahtarlar ve kimlikler kullanarak şeffaf bir şekilde sona eren bir iş/dizin ve özel/dizine sahip olabilirsiniz.
Bir Unix tabanlı sistem (Linux, BSD, Mac OS X), varsayılan kimlik 2 dosyada $ HOME/.ssh dizininde saklanır:
özel anahtar: $ HOME/.ssh/id_rsa
genel anahtar: $ HOME/.ssh/id_rsa.pub
-i seçeneği olmayan ssh kullandığınızda, uzak sistemle kimlik doğrulaması yapmak için varsayılan özel anahtarı kullanır.
If you have another private key you want to use, for example $HOME/.ssh/deploy_key, you have to use ssh -i ~/.ssh/deploy_key ...
It is annoying. You can add the following lines in to your $HOME/.bash_profile :
ssh-add ~/.ssh/deploy_key
ssh-add ~/.ssh/id_rsa
Yani ssh veya git veya scp (temelde ssh ) kullandığınızda her zaman artık -i seçeneğini kullanın.
$ HOME/.bash_profile dosyasında istediğiniz kadar anahtar ekleyebilirsiniz.