본문 바로가기
Linux

Git 서버 만들기 Ubuntu 22.04

by IT너구리실장 2023. 11. 14.
반응형

Ubuntu 22.04 에서 git server를 만들어 보겠습니다.

git server

 


# Ubuntu 서버에 git 설치하기

# apt 업데이트
sudo apt-get update
# git 설치
sudo apt-get install -y git
# 설치확인
git --version

# git-shell 경로 확인
which git-shell
# 결과 : /usr/bin/git-shell

# 아래 명령어로 파일을 열어 /usr/bin/git-shell 경로가 없으면 추가
sudo vi /etc/shells


# git 관리용 사용자 만들기

# git 사용자 추가
sudo adduser git


# SSH 디렉토리, 인증 파일 만들기

SSH로 접속해 git-shell 명령어를 사용하기 위해

사용자 git 으로 SSH 디렉토리를 생성하고 권한을 설정 합니다. 

# 사용자 전환
sudo su git

# git 홈 디렉토리 이동
cd

# 디렉토리 생성
mkdir ~/.ssh
chmod 700 ~/.ssh

SSH 디렉터리 내에 인증된 키파일을 생성하고 권한을 설정합니다.

# 인증키 파일 생성
touch ~/.ssh/authorized_keys
# 권한 설정
chmod 600 ~/.ssh/authorized_keys

 


# git 서버용 저장소 생성

git 서버 개별 저장소 디렉터리 생성

# 폴더생성 test-repo.git
mkdir /home/git/test-repo.git

# 폴더로 이동
cd test-repo.git

# git repo 초기화
git init --bare

 

디렉토리 및 하위 모든 파일 및 디렉토리의 소유자를 git으로, 그룹을 git으로 재귀적으로 변경합니다.

# 재귀적으로 디렉토리 및 파일 권한 변경
cd /home/git/
chown -R git:git test-repo.git

# 다른 사용자로 로컬 시스템에서 git repository 접근

 

git사용자가 아닌 다른 일반 사용자로 로그인.

사용자 ubuntu 로그인

SSH key pairs 생성

ssh-keygen -t rsa

생성 확인

 

공개키 Ununtu의 git 사용자 ~/.ssh 디렉토리에 복사

# ssh-copy-id -i [공개키 위치] git@[ip-address]
ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.111.100

# 오류발생 시 키스캔
ssh-keyscan -p 22 192.168.111.100 >> ~/.ssh/known_hosts

git@[host]  에서 host에 대한 인증 필요
host ssh keyscan

 

host 의 git 계정 비밀번호 입력하면 완료
/home/git/.ssh/authorized_keys 에 복사 확인

 

프로젝트 디렉터리를 만들고 깃 저장소 초기화를 진행합니다.

mkdir GitProject
cd GitProject
git init

 

 

git 원격 저장소에 현재 디렉토리 추가하기

git remote add origin git@192.168.111.100:/home/git/test-repo.git

 

테스트용 파일을 생성하고 git 명령어를 수행해 봅니다.

touch index.html   # 파일생성
git add *    # 모든파일 추가
git config user.email "ubuntu@test.com"    # 사용자 이메일 설정
git config user.name "ubuntu"   # 사용자 이름 설정
git commit -m "커밋테스트"    # 커밋

 

git 원격 저장소로 PUSH 하기

git push --set-upstream origin master

 

 

 


# git 기본 명령어

git status    # 현재 상태 확인

변경사항 있는경우
git push 후 상

git log    # 전체 로그 확인

 

git init    # git 저장소 생성하기

git clonw https:~~~    # 저장소 복제 및 다운로드

#저장소에 코드 추가
git add
git add *

git add -A     # 커밋에 파일 변경 사항 모두 포함

git commit -m "commit messge 작성"    # 커밋 생성

git push origin master    # 변경 사항 원격 서버 업로드 (push)

git pull    # 원격 저장소변경 내용 현재 디렉토리로 가져오기 (pull)

git diff [branch name] [another branch name]    # merge 전에 바뀐 내용 비교

 


# 다른 컴퓨터에서 Visual Studio Code 에 git-server repository 연동하기

 

테스트 프로젝트 생성

SOURCE CONTROL 메뉴 - Initialize Repository - Manage Unsafe Repositories - 해당폴더 클릭

.

프로젝트 폴더 확인하면 .git / . gitignore 생성 확인

git 설치 후 name / email 설정하지 않고 Commit 하면 경고창이 뜬다

 

# 터미널에서 Git Bash 선택하고 아래 명령어로 name, email 설정
git config --global user.email "email@email.com"
git config --global user.name "name"

 

SSH 키를 생성하고 git server 에 등록

ssh-keygen -t rsa

생성된 키 위치 확인

# 호스트 키스캔
ssh-keyscan -p 22 [host-ip-address] >> ~/.ssh/known_hosts

# ssh-copy-id -i [공개키 위치] git@[ip-address] 공개키 전송
ssh-copy-id -i /c/Users/[user-name]/.ssh/id_rsa.pub git@[host-ip-address]

 

 

 


git server 에서 키입력 확인

 

git server 에서 연동할 폴더 생성

# 폴더생성 test-repo.git
mkdir /home/git/git-repository/testgit.git

# 폴더로 이동
cd /home/git/git-repository/testgit.git

# git repo 초기화
git init --bare

# 재귀적으로 디렉토리 및 파일 권한 변경
chown -R git:git /home/git/git-repository/testgit.git

 

또는 Client Git Bash 에서 SSH 접속하여 작업 진행

ssh git@[ip-address]

 


준비된 git server 폴더에 연동하기

git remote add origin git@[ip address]:/[경로]

git remote -v     #원격지 설정 확인

git push --set-upstream origin main    # 원격지 브렌치 연동

# 로컬 저장소에 브렌치와 원격지에 추가하려는 브렌치명 일치시켜야함 ex) master -> origin master
# 현재 브렌치 확인
git branch
# 필요시 브렌치 생성
git checkout -b [branch-name]

이제 VS Code UI 나 확장도구도 연동되어 편하게 사용 가능


추가보안설정!  여러 사용자들이 ssh 를 통해 접속하기 때문에 서버에서 git 계정의 bash 사용 권한을 제한해야 합니다!

# 설정파일 열기
sudo vi /etc/passwd

# git 계정의 설정을 변경합니다. 맨 뒷 부분만 바꿔주면 됩니다.
# 변경 전   >>   후
git ~~~~~~~ /bin/bash   >>   git ~~~~~~~ /bin/git-shell

이후 저장소 추가시 root 권한으로 폴더를 만들고 폴더소유권한을 git 으로 설정해 주면 됩니다.

반응형