.ssh / config에서 IdentityFile 지시문을 사용하여 전달 된 키를 지정할 수 있습니까?
프로덕션 서버에서 Capistrano / GIT를 통해 일부 코드를 배포하려고 할 때이 문제가 발생했습니다. 내 개인 및 내 작업 GIT 키는 항상 내 SSH 에이전트에로드되며 개인 키가 먼저 에이전트에 추가되었습니다. Capistrano와 함께 배포 할 때 에이전트 전달을 사용하므로 호스트가 ‘git pull’작업을 인증하려고 할 때 다음 오류로 실패했습니다.
오류 : ‘일부 저장소’에 대한 권한이 사용자에게 거부되었습니다.
적절한 키 (나중에 ssh 에이전트에서 제공)를 시도하기 전에 내 개인 git 키를 사용하여 인증을 시도하고 액세스 권한이없는 외국 리포지토리에 액세스한다고 가정했기 때문입니다. 내 개인 사용자에게 모든 작업 저장소에 대한 액세스 권한을 부여 할 수는 있지만 로컬 컴퓨터에서는 .ssh / config에서 사용자 정의 도메인을 다음과 같이 정의 하여이 문제를 해결할 수 있습니다.
호스트 personal.github.com
호스트 이름 github.com
사용자 git
IdentityFile ~ / .ssh / some_key
호스트 work.github.com
호스트 이름 github.com
사용자 git
IdentityFile ~ / .ssh / some_other_key
그리고 이런 식으로 git은 혼동되지 않습니다. 프로덕션 코드에서 전달 된 키에 대해 .ssh / config 규칙을 생성하여 새 코드를 가져올 때 항상 사용할 키를 알 수 있습니까? 기본적으로 나는 할 수 있기를 원합니다.
호스트 work.github.com
호스트 이름 github.com
사용자 git
IdentityFile some_forwarded_key
감사!
답변
키의 공개 부분을 사용하여 전달 된 에이전트에서 사용할 개인 키를 지정할 수 있습니다. 이를 위해서는 모든 “중간”머신 (로컬 ssh-agent 를 전달하는 머신)에 추가 파일 (키의 공개 부분)을 작성해야합니다 .
-
중간 기계가 편리한 위치에 원하는 키의 공개 부분의 사본을 갖도록 준비하십시오 (예 🙂
~/.ssh/some_other_key.pub
.키의 공개 부분이 이미있는 머신에서 :
scp some_other_key.pub intermediate:.ssh/
또는 중간 머신에서 :
ssh-add -L | grep something_unique > ~/.ssh/some_other_key.pub
키의 출처 / 소유자 / 목적을보다 잘 식별하기 위해 공개 키의 후미 “주석”부분을 편집하거나 동일한 키를 숨기려고 할 수 있습니다.
-
위의 공개 키 파일에 대한 경로 이름을
-i
또는로 사용하십시오IdentityFile
. -
ssh 가 전달 된 에이전트로부터 추가 ID를 제공하지 못하게 하려면
IdentitiesOnly yes
(.ssh/config
또는-o
) 를 사용해야 할 수도 있습니다 .