git 에 ssh 로 연결시 verbose mode 로 실행하기
SSH 를 사용해서 git 에 연결시 권한 에러가 발생하면 이 방법을 사용해서 원인을 찾고 해결할 수 있습니다.
git pull 이나 push 를 할 때 SSH key 를 잘못 설정했으면 다음과 같은 permission denied 에러가 발생합니다.
git@github.com: Permission denied (publickey).
이럴 때 ssh 의 동작을 자세히 관찰할 수 있는 verbose mode 로 동작시키면 디버깅에 유용하지만 git 이 ssh 를 바로 호출하므로 verbose mode 옵션을 줄수가 없습니다.
git 2.3 이상부터는 GIT_SSH_COMMAND 환경 변수에 ssh 명령어를 설정할 수 있는데 verbose mode 가 필요하면 이 변수를 활용하면 됩니다.
변수 설정
Linux/OSX
export 명령어로 환경 변수를 설정합니다.
ssh 의 verbose mode 는 -v, -vv, -vvv 세가지이며 v 가 많을수록 더 자세한 정보를 출력합니다.
export GIT_SSH_COMMAND="ssh -v"
이제 git pull 이나 git push 같이 리모트 저장소에 연결하는 명령어를 실행하면 현재 ssh 설정을 디버깅할 수 있습니다.
사용이 끝났으면 unset 으로 변수를 해제합니다.
unset GIT_SSH_COMMAND
일시적으로 설정하려면 export 대신 변수를 지정하고 git 명령을 실행하면 됩니다.
GIT_SSH_COMMAND="ssh -v" git pull
Windows
Powershell 에서 GIT_SSH_COMMAND 변수를 설정합니다.
$env:GIT_SSH_COMMAND="ssh -v"
이제 git pull 이나 push 명령을 실행합니다.
git pull origin main git push origin main
변수를 해제하려면 다음 명령을 실행합니다.
Remove-item env:GIT_SSH_COMMAND
.ssh/config에 설정
SSH 의 설정 파일에 다음과 같이 LogLevel 변수를 넣어도 verbose mode 로 동작합니다.
Host github.com LogLevel Debug3 PreferredAuthentications publickey
같이 보기
- github, gitlab, bitbucket 에 ssh 공개키가 제대로 등록되었는지 확인하는 방법
- ssh config 설정해서 서버마다 다른 ssh key 사용하기
- ssh 개인키 암호 변경/해제하기(change ssh private key pass phrase)