Kullanmanın bir yolu ~/.ssh/config, Matchkı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-adminelde 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ı $SHELLdeğ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-adminkullanıcının özel anahtarını içerdiğini varsaydım gitolite-admin. IdentitiesOnly yesGit 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_repoFarklı anahtarlarla kullanmak istediğiniz birkaç tane varsa bu yapılandırmayı ekleyebilirsiniz . Birkaç havuzunuz varsa git@git.company.comve çoğunda ~/.ssh/yourOwnPrivateKeybu 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.comkısıtlamanın Match Execbir veya birinden sonra görünmesi gerektiğini unutmayın .