태그 보관물: ssh-agent

ssh-agent

AgentForwarding이 사용 중일 때 ssh_config에서 IdentityFile 지시문 사용 액세스한다고 가정했기 때문입니다. 내 개인 사용자에게

.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 를 전달하는 머신)에 추가 파일 (키의 공개 부분)을 작성해야합니다 .

  1. 중간 기계가 편리한 위치에 원하는 키의 공개 부분의 사본을 갖도록 준비하십시오 (예 🙂 ~/.ssh/some_other_key.pub.

    키의 공개 부분이 이미있는 머신에서 :

    scp some_other_key.pub intermediate:.ssh/
    

    또는 중간 머신에서 :

    ssh-add -L | grep something_unique > ~/.ssh/some_other_key.pub
    

    키의 출처 / 소유자 / 목적을보다 잘 식별하기 위해 공개 키의 후미 “주석”부분을 편집하거나 동일한 키를 숨기려고 할 수 있습니다.

  2. 위의 공개 키 파일에 대한 경로 이름을 -i또는로 사용하십시오 IdentityFile.

  3. ssh 가 전달 된 에이전트로부터 추가 ID를 제공하지 못하게 하려면 IdentitiesOnly yes( .ssh/config또는 -o) 를 사용해야 할 수도 있습니다 .


답변