프로그래머로부터 배우는 코딩의 기술

코스 전체목록

닫기

협업환경의 구축 (server)

중앙의 서버에 리모트 브랜치를 만들고 이를 통해서 협업하는 방법을 알아본다.

준비

이번 수업은 리눅스에 대한 약간의 지식을 요구 하지만 풍부한 경험은 필수 조건이 아니다.
리눅스에 대한 지식은 생활코딩의 리눅스 수업을 통해서 얻을 수 있다.
http://opentutorials.org/course/141/1007

본 수업은 '협업에 참여 (remote branch)'를 선행학습으로 한다.

본 강의는 아래의 문서 중 4장을 참고해서 만들었다. 
http://dogfeet.github.com/progit/progit.ko.pdf

지원하는 프로토콜

  • ssh
  •  local
  • git
  • http(s)

ssh 프로토콜의 특징

  • 대부분의 서버에서 접근가능
  • SSH가 가지고 있는 인증을 사용
  • 누가 리모트에 접근했는지 알 수 있다.
  • 설정이 상대적으로 쉽다.
  • 보안이 뛰어나다.
  • 데이터를 압축하기 때문에 효율적이다.
     
  • 익명접근이 안된다. 
    오픈소스 프로젝트인 경우 누구나 접근할 수 있도록  익명접근이 가능한 프로토콜을 별도로 제공해야 한다. 

SSH를 이용한 리모트 저장소 구축

서버에 저장소를 설치한다.

apt-get install git (ubuntu)  # git을 서버에 설치한다.
cd /opt; # /opt/projects/my_project를 원격저장소로 사용한다.
mkdir projects;
cd projects;
mkdir my_project;
cd my_project;
git init --bare --shared; # 최초로 원격저장소를 생성하는 경우
git clone --bare --shared url; # 이미 사용중인 저장소가 있는 경우

사용자 권한을 부여한다. 

sudo adduser git; # 관리자 권한으로 사용자 Git을 생성한다. 
su git; # 사용자 git으로 로그인 한다. 
chown -R git:git /opt/projects
cd; # 사용자 git 의 home 디렉토리로 이동한다. 
mkdir .ssh; # 만약 홈 디렉토리에 .ssh디렉토리가 없다면 생성한다. 

사용자의 로컬 컴퓨터에 ssh key을 생성한다.

cd ~/.ssh; # 사용자 홈디렉토리 중 .ssh 디렉토리에 id_dsa, id_rsa라는 이름의 파일이 있는지 확인한다. 
ssh-keygen; # ssh key 생성도구를 실행시킨다. 
scp id_rsa.pub git@url:/home/git/id_rsa.pub; # 공개키를 서버로 전송한다.

원격저장소의 서버에 *.pub 파일을 등록한다.

cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys

접속 테스트

아래와 같이 접속했을 때 로그인 절차가 없이 바로 로그인이 되어야 한다.

ssh git@원격저장소의 url

보안을 위해서 쉘기능을 제한

sudo vim /etc/passwd 

아래의 내용을 찾는다.

git:x:1000:1000::/home/git:/bin/sh

아래와 같은 내용으로 변경한다.

git:x:1000:1000::/home/git:/usr/bin/git-shell

이제 ssh를 이용해서 접속을 시도하면 서버가 아래와 같은 메시지를 출력하면서 거부한다.

$ ssh git@gitserver
fatal: What do you think I am? A shell?
Connection to gitserver closed.

원격저장소, 원격브랜치를 이용한 협업

http://opentutorials.org/course/303/2290

댓글

댓글 본문
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기