사용하는 한 가지 가능성 ~/.ssh/config
은 Match
제한 대신 제한 을 사용하는 것입니다 Host
. 특히 Match Exec
선언을 적용할지 여부를 결정하기 위해 쉘 명령을 호출합니다. bash에서는 다음 명령을 사용할 수 있습니다.
[ git@git.company.com:gitolite-admin = $(git config --get remote.origin.url)'' ]
bash [
명령을 사용하여 두 문자열이 같은지 확인합니다. 이 경우 문자열 git@git.company.com:gitolite-admin
이 $(git config --get remote.origin.url)''
명령 에서 얻은 출력과 일치 하는지 테스트합니다 .
쉘이있는 저장소를 식별하는 다른 명령을 사용할 수 있습니다. 이것이 작동 하려면 변수를 쉘에 정의 하는 것이 중요 합니다 . 전체 예는 다음과 같습니다 .$SHELL
/bin/bash
~/.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
이 예에서 나는 그 가정 ~/.ssh/yourOwnPrivateKey
자신의 개인 키를 포함하고 그 ~/.ssh/gitolite-admin
사용자의 개인 키를 포함 gitolite-admin
. IdentitiesOnly yes
git 서버에 하나의 키 만 제공되도록 선언을 포함 시켰습니다.Mark Longair가 . 다른 선언은 git의 표준 ssh 옵션입니다.
some_repo
다른 키와 함께 여러 가지를 사용하려는 경우이 구성을 추가 할 수 있습니다 . 여러 저장소가 git@git.company.com
있고 대부분의 저장소를 사용하는 ~/.ssh/yourOwnPrivateKey
경우이 키를 호스트의 기본값으로 포함시키는 것이 더 합리적입니다. 이 경우 다음과 ~/.ssh/config
같습니다.
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
순서가 중요하고 Host git.company.com
제한이 Match Exec
하나 또는 그 뒤에 나타나야 합니다.