搭建本身的git服務器

1、安裝gitgit

$ sudo apt-get install git

2、建立一個git用戶,用來運行git服務shell

$ sudo adduser git

3、客戶端生成密鑰安全

Windows:bash

    Git官網(https://git-scm.com/downloads)下載Git for Windows並安裝。服務器

    任意位置打開Git Bash,輸入如下命令:app

$ ssh-keygen -t rsa -C "您的郵箱地址"

Linux:ssh

$ mkdir .ssh
$ cd .ssh/
$ ssh-keygen -t rsa -C "您的郵箱地址"

4、建立證書登陸:code

    收集全部須要登陸的用戶的公鑰,就是他們本身的id_rsa.pub文件,把全部公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個。server

5、初始化Git倉庫:rem

    先選定一個目錄做爲Git倉庫,假定是/git/test.git,在/git目錄下輸入命令:

$ sudo git init --bare test.git

    Git就會建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的Git倉庫純粹是爲了共享,因此不讓用戶直接登陸到服務器上去改工做區,而且服務器上的Git倉庫一般都以.git結尾。而後,把owner改成git

$ sudo chown -R git:git test.git

6、禁用shell登陸:

    出於安全考慮,第二步建立的git用戶不容許登陸shell,這能夠經過編輯/etc/passwd文件完成。找到相似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

    改成:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

    這樣,git用戶能夠正常經過ssh使用git,但沒法登陸shell,由於咱們爲git用戶指定的git-shell每次一登陸就自動退出。

7、克隆遠程倉庫:

    如今,能夠經過git clone命令克隆遠程倉庫了,在各自的電腦上運行:

$ git clone git@server:/git/test.git
Cloning into 'test'...
warning: You appear to have cloned an empty repository.

    git是經過ssh來clone代碼的,上述命令將去鏈接ssh默認的22端口。若是改過ssh端口,上述代碼會失效。

$ git clone git@server:/git/test.git
Cloning into 'test'...
ssh: connect to host server port 22: Connection refused
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

    當出現這種狀況時就應該使用另一條命令來clone代碼了:

$ git clone ssh://git@server:port/git/test.git

    Done.

相關文章
相關標籤/搜索