Kullanmanın bir yolu ~/.ssh/config
, Match
kısıtlama yerine kısıtlamayı kullanmaktır Host
. Özellikle Match Exec
, bildirimlerin uygulanıp uygulanmayacağına karar vermek için bir kabuk komutu çağırır. Bash içinde aşağıdaki komutu kullanabilirsiniz:
[ git@git.company.com:gitolite-admin = $(git config --get remote.origin.url)'' ]
Bu, [
iki dizenin eşit olup olmadığını doğrulamak için bash komutunu kullanır . Bu durumda, dizenin komuttan git@git.company.com:gitolite-admin
elde edilen çıktıyla eşleşip eşleşmediğini test eder $(git config --get remote.origin.url)''
.
Kabuğun üzerinde bulunduğu havuzu tanımlayan başka herhangi bir komutu kullanabilirsiniz. Bu işlemin gerçekleşmesi için öyle önemli olması $SHELL
değişkeni benim durumumda, sizin kabuğuna tanımlanmış /bin/bash
. Tam örnek şu şekilde olur ~/.ssh/config
:
Match Exec "[ git@git.company.com:gitolite-admin = $(git config --get remote.origin.url)'' ]"
IdentityFile ~/.ssh/gitolite-admin
IdentitiesOnly yes
ForwardAgent no
ForwardX11 no
ForwardX11Trusted no
Match Exec "[ git@git.company.com:some_repo = $(git config --get remote.origin.url)'' ]"
IdentityFile ~/.ssh/yourOwnPrivateKey
IdentitiesOnly yes
ForwardAgent no
ForwardX11 no
ForwardX11Trusted no
Bu örnekte ~/.ssh/yourOwnPrivateKey
, kendi özel anahtarınızı ve ~/.ssh/gitolite-admin
kullanıcının özel anahtarını içerdiğini varsaydım gitolite-admin
. IdentitiesOnly yes
Git sunucusuna Mark Longair tarafından belirtilen tek bir anahtarın sunulduğundan emin olmak için bildirimi ekledim . Diğer bildirimler git için sadece standart ssh seçenekleridir.
some_repo
Farklı anahtarlarla kullanmak istediğiniz birkaç tane varsa bu yapılandırmayı ekleyebilirsiniz . Birkaç havuzunuz varsa git@git.company.com
ve çoğunda ~/.ssh/yourOwnPrivateKey
bu anahtarı ana bilgisayar için varsayılan olarak eklemek daha mantıklıdır. Bu durumda ~/.ssh/config
şöyle olur:
Match Exec "[ git@git.company.com:gitolite-admin = $(git config --get remote.origin.url)'' ]"
IdentityFile ~/.ssh/gitolite-admin
IdentitiesOnly yes
Host git.company.com
IdentityFile ~/.ssh/yourOwnPrivateKey
IdentitiesOnly yes
ForwardAgent no
ForwardX11 no
ForwardX11Trusted no
Siparişin ve Host git.company.com
kısıtlamanın Match Exec
bir veya birinden sonra görünmesi gerektiğini unutmayın .