Git 및 SSH, 어떤 키가 사용됩니까?


94

.ssh디렉토리에 30 개의 키 (개인 15 개 및 공개 15 개)가 있다고 가정 해보십시오 .

Git에서 주어진 원격 저장소에 연결하는 데 사용되는 것을 확인할 수있는 곳은 어디입니까?


10
여기에 허용되는 직접 GIT에 대한 같은 이유 질문 프로그래밍 관련이있다 - 누구든지 "닫기",이 질문에 대한 투표
제임스 Raitsev에게

1
틀림없이 ... 이것은 정말 슈퍼 유저 질문입니다. 여기서 문제는 git이 아니라 실행중인 플랫폼입니다. git은 상관하지 않기 때문에 "in git"에서 문제를 확인할 수 없습니다. ssh 사용 방법과 구성 방법에만 관련됩니다. ssh-agent, 모든 종류의 키 관리 시스템, 사용하는 운영 체제, 버전 등을 사용하십니까?
Arafangion 2012-06-19

답변:


67

.ssh/config파일 의 다음 항목 은 문제를 해결합니다.

  host git.assembla.com
  user git
  identityfile ~/.ssh/whatever

~/.ssh/whatever개인 키에 대한 경로는 어디에 있습니까?

또한 사용자와 호스트는

git push git@git.assembla.com:repo_name.git
         ^__ ^_______________
         user host

그래서 다른 호스트에 대해 다른 ssh 키를 사용하려면 첫 번째 이후에도 똑같이 반복할까요 ?? identityfile은 이전의 첫 번째 호스트와 관련이 있습니까?
MikeSchem

그 케이스처럼 참 좋아, 그것은 보인다 cyberciti.biz/faq/...
MikeSchem

67

ssh를 상세 모드 (aka)에서 실행 ssh -v user@host하면 엄청난 양의 디버깅 정보가 인쇄되며, 여기에는 로그인을 시도하는 키 파일에 대한 세부 정보도 포함됩니다.

debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 332
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

당신이 망할 놈의 자신의 4 단계로,이 결합하면 이제 SSH 도움말 페이지 , ssh -vT git@github.com당신에게 대답을 줄 수 있습니다.

참고 : -i스위치를 사용하여 명령 실행 중에 사용할 키 파일을 ssh에 알릴 수도 있습니다.



1
ssh 명령의 표준 오류 출력을 grep하여 다음과 같은 키 파일을 찾을 수도 있습니다 ssh -vv user@host 2> >(grep Offering).-이렇게하면 작업이 더 쉬워집니다. 마지막 파일은 공개 키 여야합니다. 예 :debug1: Offering RSA public key: /Users/macbookpro/.ssh/id_rsa
Gianfranco P.

3
github와 같은 것이 아닙니다 git.
ForeverWintr

9

에 지정되어 있지 않으면 .ssh/config기본 개인 키 파일을 사용합니다.

기본 파일은 ~/.ssh/id_rsa또는 ~/.ssh/id_dsa또는 ~/.ssh/identity프로토콜 버전에 따라 다릅니다.


알려진 호스트에 키가 추가되는 경우
mountainLion

6

내 취향에 가장 실용적인 것은 다음과 같습니다.

GIT_SSH_COMMAND='ssh -v' git …

물론 상황에 따라 매번 수동으로 앞에 추가 할 필요가 없도록 현재 SHELL의 환경으로 내보내는 것이 유용 할 수 있습니다. 그러면 다음과 같습니다.

export GIT_SSH_COMMAND='ssh -v'
git …

man gitSSH를 사용하여 Git의 작업에 영향을 미치는 몇 가지 환경 변수가 있습니다. 에 따르면 man ssh당신은 배포 할 때 디버깅 정보를 얻을 수있는 -v옵션을 (뿐 아니라, 더 많은에 대한 호기심이 있다면 설명서를 확인).

어떤 키가 사용됩니까?

출력에서 다음과 같은 smth를 볼 수 있습니다.

debug1: Offering public key: …

… 그것이 당신의 qn에 대한 답입니다.


1
예. 이것은 받아 들여진 대답이어야합니다. Windows CMD (ugh)에서 작동하도록하려면 다음을 사용하십시오 set GIT_SSH_COMMAND=ssh -v.. 이 날은 SSH-설정 Inlcude 경로가 창에 이런 식으로 뭔가해야한다고 알아낼 도움이 Include /C/Users/YourUserName.ssh/configSSH를 만들기 때문에 자식 사용 후, 예를 들어 사용하는 config 파일 HOST *식별 파일 자식 / SSH의 사용을 지정하는 항목을.
icyerasor

5

때문에 git단지가 사용하는 ssh연결,이 중 키 사용 ssh원격 호스트에 연결하는 데 사용할 수 있습니다. 자세한 내용은 ~/.ssh/config파일을 참조하십시오. host블록은 사용 IdentityFile사용에 개인 키를 지정하는 지시문을. ssh_config(5)맨 페이지는 자세한 내용이 포함되어 있습니다.


흠 .. 파일이 내 시스템에 존재하지 않습니다. 그럴까요?
James Raitsev

1
@JAM 어떤 OS를 사용하고 있습니까? 또한, 때로는 설정 파일에 있습니다/etc/ssh/ssh_config

나는 MACOS에 있습니다. 발견 /etc/ssh_config주석 항목의 전체 파일로 표시되는
제임스 Raitsev

@sarnold ~/.ssh/config자신을 만들 수 있습니다 .
xdazz

4

이것은 슈퍼 에지 일 수 있지만 실행 후 키를 ssh -vT git@github.com확인하고 있음을 보여 주었고 /root/.ssh홈 디렉토리를 확인할 것으로 예상하고 루트로 로그인 한 것을 깨달았습니다!


이 기술은 다른 것과 동일한 ssh심문 방법 중에서 올바른 솔루션입니다. 감사.
eigenfield

1

원격 서버에서 sshd_config 파일을 편집하고 LogLevel을 INFO에서 VERBOSE로 변경하고 ssh를 다시 시작합니다.

이제 로그 파일에 각 사용자를 인증하는 데 사용 된 키의 지문이 저장됩니다.

Ubuntu에서 이러한 파일은 다음과 같습니다.

/etc/ssh/sshd_config
/var/log/auth.log

하지만 다른 배포판에서는 다를 수 있습니다. 위치를 Google로 확인하세요 (일부는 / var / log / secure를 사용합니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.