git은 사실상 표준이 되었고, 요즘 git 없이 개발을 하는 건 사실상 불가능합니다. 그런데 git에서 왜 ssh나 https가 나오는지 모르는 사람이 많더라고요. 그래서 이번 글에서는 git과 ssh, https의 관계에 대해서 알아보겠습니다.
git은 소스 코드 관리 도구입니다. 형상은 여기서 중요하지 않기 때문에 제외했습니다. 소스 코드를 한 컴퓨터에서 관리한다면 ssh나 https가 필요 없었을 겁니다. 그런데 소스 코드를 깃허브 같은 데에다가 올리잖아요? 서버에 접속하는 과정에서 안전하게 데이터를 전송할 방법이 필요합니다. 그 과정에서 ssh나 https가 사용됩니다.
제가 자주 갔던 카페가 있습니다. 집에서 가깝진 않은데 그 주변에서 일이 많아서 기다릴 떄마다 그 카페에서 코딩을 했죠. 그런데 어느 날, 인터넷은 되는데 깃허브에 푸시를 할 수가 없더라고요. 그래서 몇가지 테스트를 해보니까, SSH 기본 포트인 22번 포트가 막혀있었습니다. 해결법은 간단했습니다만, 검색하기가 좀 어려운 문서 같아서 검색 인덱스 겸, 한국어 해석본 겸으로 쓰는 글입니다.
해결법은 공식 깃허브 문서에 적혀있었습니다. 쉽게 얘기하면 22번 포트가 막혀있으니, 443번 포트를 쓰라는 소리입니다. 443번 포트는 HTTPS 포트인지라, 방화벽이 막을 확률이 매우 낮습니다.
참고: git 훅에 대한 공식 문서가 존재합니다.
소스코드 관리 도구인 git은 여러가지 훅을 지원합니다. 훅을 설정하면 커밋, 푸시 등의 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있습니다. 클라이언트 훅도 존재하고 서버 훅도 존재하지만, GitHub 같은 호스팅 서비스들이 대부분 서버 사이드 훅을 지원하지 않기 때문에 클라이언트 사이드 훅이 주로 쓰입니다.
주의해야할 점은 보안을 위해 레포지토리를 클론해도 git 훅이 자동으로 설정되지 않는다는 점입니다. 그래서 훅을 설치하는 스크립트를 만들어서 그걸 실행해거나, husky 같은 git 훅 관리 도구를 사용해 훅을 설정해야 합니다.
레포지토리의 커밋 기록이 이상한 경우 GitHub 관리는 개발자한테 정말 중요한데요, 처음에 git으로 코드를 올리면 레포지토리의 내용물은 변경이 되는데 커밋 히스토리를 보면 뭔가 빠져있습니다. 프로필 사진이 공백으로 표시될 확률이 높은데요, Git에 설정된 이메일이 GitHub에 등록되어있지 않아서 생기는 문제입니다.
git config --global user.name "Your Name" git config --global user.email you@example.com Git을 처음 설치하실 때 사용하셨던 이메일을 GitHub 이메일 설정 페이지에 등록하시면 됩니다.
GitHub 프로필에 잔디가 생기지 않는 경우 만약 커밋 히스토리 페이지에서 프로필로 연결은 되는데 프로필에 표시되지 않는 거라면 원인은 크게 두가지입니다.
네트워크 통신을 하려면 IP주소와 포트의 쌍이 필요한데요, 포트 번호에는 예약된 번호들이 있습니다. 0부터 1023까지가 그것인데요, 모두 사용되는 건 아닙니다. 추후에 추가될 수 있기 때문에 예약해놓았다고 생각하시면 됩니다. 이 글에서 다룰 포트 번호는 몇가지 없는데요, HTTP는 80, HTTPS는 443이라는 것만 알고계시면 됩니다.
리눅스 같은 경우 예약된 포트에 소켓을 바인딩하려면 루트 권한이 필요합니다. 이러한 이유 때문에 웹서버를 개발할 떄 80이나 443을 쓰지 않습니다. 루트 권한을 요구하는 건 보안상 매우 안 좋은 일인데, 겨우 localhost 뒤에 숫자 없애자고 루트 권한을 요구하는 건 지나친 일이기 때문입니다.