다양한 사용자 이름을 통한 에이전트 전달(Git 및 배포)

다양한 사용자 이름을 통한 에이전트 전달(Git 및 배포)

이 쿼리는 Git과 직접적인 관련이 없지만 Git에서 지원하는 전송 중 하나가 SSH이고 에이전트 전달을 사용하려고 하므로 설명을 요청해야겠다고 생각했습니다(man 페이지에서 실망했습니다).

Capistrano를 사용하여 소프트웨어 배포를 자동화하려고 하며 일부 문제점(알려진 호스트 사전 시드, 배포 전 등)을 일시 중단했지만 다음과 같은 상황이 남습니다.

우리 팀은 개별 사용자 계정으로 서버에 로그인하고 모든 사람이 그룹에 developers속해 umask있으며 002. 슈퍼유저 권한을 요구하지 않고 우리 팀이 항상 스스로 작업할 수 있도록 하는 것이 목적이라는 점을 제외하면 위의 내용 중 어느 것도 실제로 관련이 없습니다.

example.com다음을 사용하여 서버에 연결합니다 ~/.ssh/config.

Host example.com
  User beaks
  ForwardAgent yes
  IdentityFile ~/.ssh/id_rsa_business

초기 로그인은 완벽하게 작동하고 ssh example.com내 사용자 계정에 연결되며 모든 것이 정상입니다.

문제는 다음 단계에서 발생하는데,

git ls-remote [email protected]:project/repository.git

이는 앞서 언급한 Git+SSH 전송 계층(위 링크 참조)을 사용하고 있으며 일반적으로 전달된 에이전트 키(현재 확인된 키 env | grep SSH_AUTH_SOCK) 를 사용해야 합니다.

응답은 단순한 "인증 실패(공개 키) 상대방이 예기치 않게 끊었습니다"입니다. github.com공유 git사용자로 접근할 때 내 사용자의 에이전트가 사용되지 않기 때문이라고 의심됩니다.

또한 이상한 점(보안 정책 등)도 배제할 수 없습니다 EC2. 하지만 이 경우에는 시간 초과나 연결 실패가 예상되었을 것입니다. 나는 내가 타격을 가할 것이라고 확신합니다 github.com. 그리고 그들이 나를 들여보내지 않을 것이라고 생각합니다. 왜냐하면 내 에이전트가 사용자 beaks에게 내 키를 제공하지 않기 때문입니다 git.

제가 놓친 정보가 있으면 추가 정보를 추가해 드리겠습니다.

답변1

단순히 ssh-agent가 실행 중인지 확인하는 것만으로는 충분하지 않습니다. 원하는 키가 있는지 확인하십시오. ssh-add -L 이 키가 다른 호스트에서 작동하는지 확인하셨습니까? ssh-add -L해당 시스템에서는 무엇을 인쇄합니까 ?

실행할 수도 GIT_TRACE=1 git ls-remote ...있으며 실행되는 ssh 명령이 인쇄됩니다. ssh 명령을 수동으로 실행하고 git을 그림으로 가져오기 전에 작동하도록 할 수 있습니다.

답변2

실제로 이 질문에 답한 사람은 아무도 없습니다.그래서 여기에 오는 사람들은 비슷한 질문에 대한 내 대답을 보는 것이 도움이 될 수 있습니다.https://superuser.com/a/1141035/3376

관련 정보