最簡單git伺服器配置-SSH連線方式
Git伺服器連線可用的協議通常有SSH、GIT、HTTP(S)和FTP等,其中最方便實現的是SSH方式。
SSH方式的GIT伺服器實現也有兩種方式:如果你在一個小型團隊並且不需要做許可權控制,那麼使用SSH就可以搭建了,否則你還需要gitolite
本文將介紹如何使用SSH實現最簡單Git伺服器搭建。注意,前面所述的兩種實現方式不可同時搭建。如何解決,在寫本文時還未探索。想來應該需要在伺服器上使用不同使用者做隔離吧。
因為公司版本控制使用的是SVN,並沒有提供搭建git的伺服器,因此我的git伺服器搭建在了本機Ubuntu上(為了配合Redmine一起使用,否則沒必要搭這個本地伺服器)。
準備工作
首先,要保證git服務功能可用。在安裝git的時候,你可能安裝了git包,而不是git-core包。要提供git伺服器功能需要完整安裝git-core包(不知道是不是真的,網上大家都這麼說,反正我搭建之前已經安裝了,沒去驗證真偽)。
sudo apt-get install git-core
當然,你還需要保證你的SSH服務是可用的
sudo apt-get install openssh-server
伺服器使用者
之後需要配置git服務使用者
$ sudo useradd -c "git server account" -m -r -U git $ id git uid=999(git) gid=998(git) 組=998(git)
這樣我們就建立了一個隱藏賬戶git,其id為999(ID小於1000的使用者不會出現在登入列表中)。同時為其建立了同名使用者組
之後需要為git賬戶臨時設定密碼(正常情況下git賬戶是不允許登入的,但我們現在需要登入或切換使用者來進行配置)
$ sudo passwd git
輸入新的 UNIX 密碼:
重新輸入新的 UNIX 密碼:
passwd:已成功更新密碼
SSH連線
之後我們需要配置服務端git使用者的金鑰認證登入。可參考我的另一篇部落格《使用RSA Key代替密碼進行ssh遠端登入》
這裡簡單記錄下操作程式碼提供參考,不再解釋
$ ssh-keygen -t rsa -f ~/.ssh/git_rsa -C " [email protected]" -b 4096
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xxx/.ssh/git_rsa.
Your public key has been saved in /home/xxx/.ssh/git_rsa.pub.
The key fingerprint is:
15:45:de:77:8e:19:34:97:64:3b:27:65:89:cf:47:ec [email protected]
The key's randomart image is:
+--[ RSA 4096]----+
| .oo =+*|
| o +.B+|
| . . *=+|
| . XE|
| S o o|
| |
| |
| |
| |
+-----------------+
$ ssh-copy-id -i ~/.ssh/git_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.
$ ssh [email protected] -t
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)
* Documentation: https://help.ubuntu.com/
System information as of Sun Aug 17 10:54:39 CST 2014
System load: 0.08 Processes: 253
Usage of /home: 46.3% of 98.31GB Users logged in: 1
Memory usage: 21% IP address for wlan0: 192.168.0.103
Swap usage: 0%
Graph this data and manage this system at:
https://landscape.canonical.com/
0 packages can be updated.
0 updates are security updates.
Last login: Sun Aug 17 10:47:31 2014 from localhost
至此我們可以刪除git使用者的密碼了。之後再需要增加使用者金鑰時,遠端登入修改$HOME/.ssh/authorized_keys檔案,增加對應公鑰內容即可。
$ sudo passwd git -d
passwd:密碼過期資訊已更改。
GIT遠端倉庫
現在,使用者和SSH都準備好了,如何提供服務呢?
這個簡單,只要在git使用者主目錄下建立一個bare版本庫就好了。
我們新建一個空倉庫,你也可以從現有git倉庫克隆
$ ssh [email protected]
$ git init --bare project.git
初始化空的 Git 版本庫於 /home/git/project.git/
或者使用git clone --bare命令進行裸版本庫克隆,注意不要使用--shared引數。
使用遠端倉庫
與使用github相似,不過只能使用[email protected]:repository.git的形式連線
$ git remote add origin [email protected]:project.git
$ git push origin master
Counting objects: 57, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (28/28), done.
Writing objects: 100% (57/57), 10.40 KiB | 0 bytes/s, done.
Total 57 (delta 9), reused 0 (delta 0)
To [email protected]:project.git
* [new branch] master -> master