git伺服器的簡單搭建

2021-07-04 17:46:19 字數 2165 閱讀 4434

搭建git伺服器需要一台執行linux的機器,我的機器的系統是ubuntu 14.04,下面以我的機器為例介紹下git伺服器的搭建過程,最後介紹乙個新專案的建立過程。

其中openssh-server和opensssh-client使git能夠使用ssh協議在客戶端和伺服器間傳輸檔案。

$ sudo apt-get install git openssh-server openssh-client
建立乙個git使用者,執行git服務。

$ sudo adduser git
進入git使用者主目錄,建立目錄.ssh,將所有開發者的ssh公鑰新增到authorized_keys中,一行乙個。假設已經獲得的公鑰存於臨時檔案中。

$ su git

$ cd

$ mkdir .ssh

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

每個開發者獲取ssh公鑰方法:

在自己機器中,找到檔案~/.ssh/id_rsa.pub,如果該檔案不存在,則建立ssh key。

$ ssh-keygen -t rsa
檔案

~/.ssh/id_rsa.pub中存放的即為當前機器的ssh公鑰。

首先建立乙個裸倉庫(--bare),裸倉庫沒有工作區,因為伺服器上的git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器去改工作區,並且伺服器上的git倉庫通常以.git結尾。

$ cd /opt/git

$ mkdir project.git

$ cd project.git

$ git --bare init

需要注意的是,目前所有的開發者都能以系統使用者git的身份登入伺服器從而獲得乙個普通shell。若果想對此加以限制,需要修改passwd檔案中git使用者的shell值。

$ sudo vim /etc/passwd
找到類似下面的一行:

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

將其改為:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git使用者只能利用ssh連線對git倉庫進行推送和拉取操作,而不能登入機器並取得普通shell,如果試圖登入,則會被拒絕。

$ ssh git@gitserver

fatal:interactive git shell is not enabled.

...

$ cd

$ mkdir project

$ git init

$ git add .

$ git commit -m "initial commit"

$ git remote add origin git@gitserver:/opt/git/project.git

$ git push origin master

$ git clone git@gitserver:/opt/git/project.git

$ cd project

work

$ git commit -am "describe your work"

$ git push origin master

假設git倉庫伺服器的主機名為gitserver,伺服器執行在內網。

$ sudo vim /etc/hosts

xx.xx.xx.xx(serverip) gitserver
即可將gitserver指向git倉庫伺服器

git伺服器沒有工作區,檔案都在倉庫目錄裡

git ls-files --with-tree=head  顯示目錄中有哪些檔案

git cat-file -p commit-id:file  顯示commit-id提交中file檔案的內容

簡單Git伺服器搭建

shell yum install gitshell useradd git etc passwd 將git使用者中最後 bin bash改為 usr bin git shell git x 1001 1001 home git usr bin git shell在客戶端使用ssh agent建立r...

搭建簡單的Git伺服器

建立乙個遠端的git倉庫其實最好的選擇就是使用github,國內也有類似的 gitcafe。但對於某些珍視 的商業公司,它們不希望在網上公開公司專案的 又不願意在github之類的 上使用付費功能 那就只有公司內部自己搭建一台git伺服器咯。一 安裝openssh和git 搭建git伺服器,需要所在...

git伺服器的簡單搭建

sudo adduser git 在home下建立了同名的資料夾 設定密碼 passwd gitvi etc passwd 將git x 1001 1001 home git bin bash 改為git x 1001 1001 home git usr bin git shell 會在當前的路徑下...