AgentForwarding이 사용 중일 때 ssh_config에서 IdentityFile 지시문 사용


15

.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

감사!

답변:


22

키의 공개 부분을 사용하여 전달 된 에이전트에서 사용할 개인 키를 지정할 수 있습니다. 이를 위해서는 모든 "중간"머신 (로컬 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) 를 사용해야 할 수도 있습니다 .


이것은 10 가지 다른 솔루션에서 나를 위해 일한 유일한 것입니다.
Tracy Fu

1
이것을 가지고 노는 중개인 시스템의 ~ / .ssh / id_rsa.pub에 사용하려는 개인 키와 관련된 공개 키를 넣으면 기본적으로 ~ /의 구성이 필요하지 않습니다. .ssh / config.
bschlueter

Chris와 bschlueter에게 감사합니다! ssh someserver -t "ssh-add -L | grep something_unique> ~ / .ssh / id_rsa.pub; cd some / other / folder; bash --login"
blablabla

ssh -v -T ...서버에서 공개 키를 수락하면 이 작업을 시도하면 ssh가 말하고 No such identity: /home/name/.ssh/id_rsa: No such file or directory인증이 실패합니다. 모든 구성에서 ForwardAgent를 사용하도록 설정했습니다. 무엇이 문제 일 수 있습니까?
Lars Nyström
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.