개발 관련/Git

내 리눅스 서버에 Git 저장소 만들기

우진샘 2023. 1. 14. 16:26

업무용으로 git을 사용하려다보니 아무래도 github같은 공개된 곳에 저장소를 두기보다는 나만의 서버에 저장소를 두어야 하는 일이 생겼다.

인터넷에서 자료를 찾아봐도 대부분 github를 이용하는 방법만 나와 있지 개별적으로 서버를 두고 사용하는 것에 대한 자료는 찾기가 어려웠다.

따라서 추후에도 업무용으로 사용하려다보면 나만의 저장소를 따로 만들어야 하는 경우가 계속 발생할 것이기에 내용을 정리하고 한다.

1. Bare 저장소 생성
2. 서버로 Bare 저장소 복사
3. git용 계정 생성
4. git용 계정 서버 로그인 안되게 변경
5. git 명령어 제한

 

1. Bare 저장소 생성

먼저 저장소를 Bare 저장소로 만들어야 하는데 소스가 안보이는 형태의 저장소이며 폴더이름에 .git을 덧붙인 형태의 이름을 지정하게 된다.
저장소를 만드는 방법은 아래와 같다.

1) 새로 만드는 경우
$ mkdir myprj.git
$ cd myprj.git
$ git init --bare

2) 기존의 저장소를 복사해서 만드는 경우
$ git clone --bare myprj myprj.git

 

2. 서버로 Bare 저장소 복사

리눅스 서버의 경우 /srv/git 폴더에 넣도록 하자

$ scp -r myprj.git userid@myserver.com:/srv/git

 

3. git용 계정 생성

git 사용을 위한 계정을 생성하도록 한다. git계정임을 쉽게 알 수 있도록 계정이름을 git으로 하자

$ adduser git

여러 사람이 SSH로 접속할 수 있도록 git 계정의 .ssh/authorized_keys 파일에 모든 키를 입력한다.
혹은 git 계정 정보(패스워드)를 팀원들에게 알려주도록 하자.

 

4. git용 계정 서버 로그인 안되게 변경

git 계정으로 서버에 로그인이 될 경우 누군가가 git 저장소를 망가뜨릴 수가 있다.
따라서 git 계정은 git을 위한 push, pull 용도로만 사용을 하고 직접적인 저장소 접근 권한을 주지 않는 것이 좋다.
따라서 git 계정으로는 서버에 로그인을 하지 못하도록 shell을 git-shell로 변경하도록 하자.

$ which git-shell    # git-shell의 경로 확인
$ sudo vim /etc/shells  # 위에서 확인한 git-shell의 경로를 추가

혹은 아래 명령으로 shell을 변경
$ sudo chsh git -s /usr/bin/git-shell

이렇게 하면 git 계정으로 서버에 로그인이 차단이 되게 된다.

 

5. git 명령어 제한

위 4번항까지 진행을 하면 모든 설정은 다 마쳤다.
git 계정의 홈에 git-shell-commands 폴더를 만들어 git-shell의  동작을 바꾸면 git의 명령어를 제한할 수 있고,
명령어를 실행했을 때 나타나는 메세지도 변경을 할 수도 있다.
git help shell 명령어를 실행하여 git-shell을 변경하는데 필요한 정보를 확인 해 보도록 하자.