Ubuntu Git 서버 구축

8254 단어
Git는 매우 유명한 분포식 버전 제어 시스템이다.Gitosis는 Git와 ssh를 통해 중앙 서버를 쉽게 설치할 수 있는 소프트웨어다.이 글의 설치 절차는 매우 명확하게 썼지만 사용 중에 약간의 문제에 부딪혔기 때문에 본고는 이 절차의 보충이라고 할 수 있다.만약 Gitosis를 통해 서버를 가설하려고 한다면 본문을 통해 많은 시행착오를 줄일 수 있을 것이다.

1. 설치 절차


1.python setuptools 다운로드 및 설치


sudo apt-get install python-setuptools

2.gitosis 다운로드 및 설치


cd ~/src 
git clone git://eagain.net/gitosis.git 
cd gitosis 
python setup.py install

3. 사용자git 추가

sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git version control' \
    --group \
    --disabled-password \
    --home /home/git \
    git

4. 기본 키 생성


만약 ~/.ssh/id_rsa.pub 이 단계를 생략합니다.
ssh-keygen -t rsa

5. 서버 임시 디렉터리에 키 업로드


scp ~/.ssh/id_rsa.pub 사용자 이름@ 호스트:/tmp

6. 초사화gitosis


서버로 돌아가기
sudo -H -u git gitosis-init

7. post-update 권한 수정


sudo chmod 755/home/git/repositories/gitosis-admin.git/hooks/post-update

8. clonegitosis 관리 플랫폼


git clone git@ 호스트 이름:gitosis-admin.git 
cd gitosis-admin

9. 설치 완료


gitosis-admin 수정을 통해 gitosis 사용자 권한 관리
키디르에 공밀 추가, 사용자 추가
수정이 끝난 후commit,push는 중 서버에 가서 창고 권한에 대한 작업을 완성할 수 있습니다.

2. 실례


목표: 사용자john과 창고foo를gitosis에 추가하고 관리자miao와 합작 관리

1. 사용자 john id_ 추가 및 보내기rsa.pub


john:~$ ssh-keygen -t rsa
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/john/.ssh/id_rsa): 
Created directory '/home/john/.ssh'. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in/home/john/.ssh/id_rsa. 
Your public key has been saved in/home/john/.ssh/id_rsa.pub. 
john:~$ cp/home/john/.ssh/id_rsa.pub/tmp

2.gitosis 관리자miao가 john 권한을 할당


miao:~$ cd ~/projects
git clone [email protected]:gitosis-admin
cd gitosis-admin
cat gitosis.conf
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = miao@u32-192-168-1-110

ls keydir/
[email protected] 
cp/tmp/id_rsa.pub keydir/john.pub
vi gitosis.conf
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = miao@u32-192-168-1-110

[group foo]
writable = foo
members = miao@u32-192-168-1-110 john

git add .
git commit -am "add member john and project foo"
git push

3. 사용자 miao 항목 추가 foo


miao:~$ cd ~/projects
mkdir foo
cd foo
git init
touch hello.txt
git add hello.txt
git commit -am 'first commit'
git remote add origin [email protected]:foo.git
git push origin master

4. 사용자 john clone Foo 및 hello를 수정합니다.txt


john:~$ git clone [email protected]:foo.git
cd foo
ls
date > hello.txt
git commit -am 'add time to hello.txt' && git push

5. 사용자 miao pull Foo


miao:~/projects/foo$ vi .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = [email protected]:foo.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

git pull

3. FAQ


우선/home/git/repositories/gitosis-admin을 확정합니다.git/hooks/post-update는 실행 가능한 속성입니다.

1.git 작업은 비밀번호를 입력해야 한다


원인
기밀을 찾을 수 없습니다.
해결하다
업로드 id_pub.rsa에서 keydir로'gitosis 계정으로 변경합니다.pub'형식, 예를 들어miao.pub.확장자pub 생략불가

2. ERROR:gitosis.serve.main:Repository read access denied


원인
gitosis.conf의members와keydir의 사용자 이름이 일치하지 않습니다. 예를 들어gitosis의members=foo@bar하지만 키디르의 공밀명은foo라고 합니다.pub 
해결하다
키디르의 이름을gitosis에서members가 가리키는 이름과 일치하게 합니다. 
members = foo 또는 공밀 이름으로 변경[email protected]

ssh로 키 문제를 사용하여 서명하는 에이전트 인증 실패 해결


ssh 구성
이전에 이 컴퓨터에 ssh를 설치하려면 sudo apt-get install ssh 또는 신립드를 통해 설치할 수 있습니다.만약 설정이 이루어지지 않았다면 본 컴퓨터나 원격 호스트에 로그인하려면 이 호스트의 비밀번호가 필요합니다.암호 없이 로그인하도록 구성합니다.
간단합니다. ssh-keygen-trsa 명령을 실행하고 차를 두드리면 됩니다. 바로 있습니다.ssh 폴더 아래에 파일 2개, 공개 키 및 개인 키 파일, id_rsa  id_rsa.pub, 그리고cp~/를 실행합니다.ssh/id_rsa.pub ~/.ssh/authorized_keys 명령.이렇게 설정하면 비밀번호 없이 이 컴퓨터에 로그인할 수 있다.원격 호스트에 로그인하려면 authorized_keys 파일을 원격 호스트로 보내는 ~/.ssh/디렉터리 아래.
현재 ssh는 같은 방법을 사용하면 오류 메시지가 발생합니다
Agent admitted failure to sign using the key
해결 방법은 ssh-add 명령을 사용하여 개인 키를 추가합니다 (개인 스푼 이름에 따라 id_rsa 변경) #ssh-add ~/.ssh/id_rsa 
ssh 호스트 이름을 통해 비밀번호 없이 로그인할 수 있습니다.

좋은 웹페이지 즐겨찾기