문제 상황
git bash에서 ssh 키들을 생성하고 (파일명: id_rsa_github, id_rsa_gitlab) 각 계정에 공개키를 등록했는데, gitlab 인증키만 인식되고 github 키는 인식이 안 되는 오류가 발생했다.
이에 연결 테스트를 진행하며 인증 과정을 디버깅하며 문제를 해결했다.
해결 과정
- ssh 연결 테스트
ssh -T git@github.com
## 오류 메시지
git@github.com: Permission denied (publickey)
메시지에서 볼 수 있다시피 ssh 공개키 인증 실패로 인한 오류이다.
- ssh 연결 테스트 - 로그 확인
ssh -vT git@github.com
##
> debug1: identity file /Users/YOU/.ssh/id_rsa type -1
> debug1: identity file /Users/YOU/.ssh/id_rsa-cert type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa type -1
> debug1: identity file /Users/YOU/.ssh/id_dsa-cert type -1
> ...
> debug1: Authentications that can continue: publickey
> debug1: Next authentication method: publickey
> debug1: Trying private key: /Users/YOU/.ssh/id_rsa
> debug1: Trying private key: /Users/YOU/.ssh/id_dsa
> debug1: No more authentication methods to try.
> Permission denied (publickey).
여기서 로그를 읽어보면서 문제 해결 지점을 발견했다.
1. " identity file ... type -1 " 라는 메시지에서 ssh 키 파일을 못 찾고 있음을 확인했다.
2. 나는 id_rsa_github, id_rsa_gitlab이라는 파일명으로 키를 등록했는데 해당 키들을 찾고 있지 않는 것을 발견했다. 그래서 내가 직접 설정한 config 파일을 확인했다.
3. config 라는 확장자 없는 설정 파일을 작성해야 했는데 .sh 라는 확장자를 내가 부여한 것을 확인했다..
vim ~/.ssh/config 로 제대로 작성하니 ssh 연결에 성공했다.
cf) config
Host github.com-ooo # ssh 명령에 사용하 이름
HostName github.com # 연결할 호스트명
User git # 연결에 사용되는 계정명 (호스트가 요청하는 사용자명)
IdentityFile ~/.ssh/xxxx # 개인키 경로
Host gitlab.com-xxx
HostName gitlab.com
User git ###
IdentityFile ~/.ssh/xxx
User에 내 계정을 적어야 하는지 git을 적어야 하는지 계속 헷갈렸었다. 이 파일은 원격 서버에 접속하기 위한 정보로 User 값은 github에서 요구하는 계정인 git으로 작성해야 한다고 한다. (근데 난 실제 계정명으로 해도 인식은 잘 됐다)
결론
여러 계정 설정을 작성해둔 config 파일이 인식되지 않아 ssh agent가 해당 파일 내부에 작성한 키들을 읽을 수 없었다.
처음 연결을 시도한 gitlab 계정만 ssh 연결에 성공하고, 이후 시도한 github 계정은 config 파일이 읽히지 않으며 오류가 발생한 것이었다.
후기
처음엔 Permission denied (publickey)라는 한 줄의 오류 메시지만 검색하면서 다른 사람들의 사례를 참고했는데, 내 케이스와 관련없는 정보만 배우게 되었다.
연결 테스트에서 로그를 단계별로 추적하면서 특이점을 발견해가는 것이 이번 문제를 해결하는 데 큰 도움이 됐다.
결국 ssh 연결은
1. ssh 키 생성
2. ssh-agent에 개인키 등록
3. 깃허브 계정에 공개키 등록
+config 작성
이 전체 과정에서 실수없이 하면 성공할 수 있다....(난 왜 이게 어려웠을까..)
다음부터 이런 어이없는 실수는 안 해야겠다.
'Programming > 오류 일지' 카테고리의 다른 글
| [Java] 대용량 엑셀파일 다운로드 (Sxssf, ResultHandler) (1) | 2024.06.19 |
|---|---|
| 별개의 AWS 계정으로 서브도메인 설정하기 (0) | 2023.04.12 |
| [AWS Elastic Beanstalk, Github Actions] EC2 배포 자동화 설정 시 주의할 점 (0) | 2023.01.24 |