国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Linux中使用Gitolite搭建Git服務器,服務器和客戶端可以為同一臺

2024-08-27 23:58:37
字體:
來源:轉載
供稿:網友

在linux系統中我們可以直接使用Gitolite 搭建 Git 服務器了,下面本文章就給各位介紹詳細的配置過程,希望能幫助到大家。

一般來說,配置git服務器的話,需要一臺服務器,還需要一個客戶端來驗證服務器是否搭建成功,而一般開發者基本都只有一臺服務器,那就需要這臺服務器既作為Git的服務器,又要作為客戶端來使用了,下面的教程就是以服務器和客戶端都是同一臺服務器為例的。如果需要服務器和客戶端分開的話,只需要將下面列出的服務器端和客戶端的操作到相應的機器上操作就可以了。

第一步,服務器端創建git服務器專用賬戶,賬戶名字就叫git吧,創建之后為其設置密碼,代碼如下:

  1. # useradd -m -s /bin/bash git 
  2. # passwd git 
  3. Enter new UNIX password:  
  4. Retype new UNIX password:  
  5. passwd: password updated successfully 

切換到git用戶,在家目錄/home/git下創建安裝目錄bin,代碼如下:

  1. root@letuknowit:~# su - git 
  2. git@letuknowit:~$ mkdir bin 
  3. git@letuknowit:~$ ll 
  4. total 24 
  5. drwxr-xr-x 3 git  git  4096 Aug 20 10:38 ./ 
  6. drwxr-xr-x 8 root root 4096 Aug 20 10:36 ../ 
  7. -rw-r--r-- 1 git  git   220 Apr  3  2012 .bash_logout 
  8. -rw-r--r-- 1 git  git  3486 Apr  3  2012 .bashrc 
  9. drwxrwxr-x 2 git  git  4096 Aug 20 10:38 bin/ 
  10. -rw-r--r-- 1 git  git   675 Apr  3  2012 .profile 

獲取 Gitolite 并安裝,gitolite要安裝在服務器端,安裝之前要保證系統上已經安裝了git,代碼如下:

  1. git@letuknowit:~$ git clone git://github.com/sitaramc/gitolite 
  2. Cloning into 'gitolite'... 
  3. remote: Counting objects: 8682, done. 
  4. remote: Total 8682 (delta 0), reused 0 (delta 0) 
  5. Receiving objects: 100% (8682/8682), 3.61 MiB | 33 KiB/s, done. 
  6. Resolving deltas: 100% (4917/4917), done. 
  7. git@letuknowit:~$ ll 
  8. total 28 
  9. drwxr-xr-x 4 git  git  4096 Aug 20 10:40 ./ 
  10. drwxr-xr-x 8 root root 4096 Aug 20 10:36 ../ 
  11. -rw-r--r-- 1 git  git   220 Apr  3  2012 .bash_logout 
  12. -rw-r--r-- 1 git  git  3486 Apr  3  2012 .bashrc 
  13. drwxrwxr-x 2 git  git  4096 Aug 20 10:38 bin/ 
  14. drwxr-xr-x 6 git  git  4096 Aug 20 10:40 gitolite/ 
  15. -rw-r--r-- 1 git  git   675 Apr  3  2012 .profile 
  16. git@letuknowit:~$ gitolite/install -ln 
  17. git@letuknowit:~$ ll 
  18. total 28 
  19. drwxr-xr-x 4 git  git  4096 Aug 20 10:40 ./ 
  20. drwxr-xr-x 8 root root 4096 Aug 20 10:36 ../ 
  21. -rw-r--r-- 1 git  git   220 Apr  3  2012 .bash_logout 
  22. -rw-r--r-- 1 git  git  3486 Apr  3  2012 .bashrc 
  23. drwxrwxr-x 2 git  git  4096 Aug 20 10:44 bin/ 
  24. drwxr-xr-x 6 git  git  4096 Aug 20 10:40 gitolite/ 
  25. -rw-r--r-- 1 git  git   675 Apr  3  2012 .profile 

第二步,客戶端,創建 Gitolite 服務器管理員用戶,并創建管理員用戶密鑰.

因為我們是在同一臺服務器上,直接exit退回到root用戶,之后變身為客戶端模式,如果客戶端和服務器分開的話,不需要exit指令了,直接在客戶端執行添加用戶的指令就可以了,這里的Gitolite服務器管理員用戶名我們叫gitAdmin,代碼如下:

  1. git@letuknowit:~$ exit 
  2. logout 
  3. root@letuknowit:~# useradd -m -s /bin/bash gitAdmin 
  4. root@letuknowit:~# passwd gitAdmin 
  5. Enter new UNIX password:  
  6. Retype new UNIX password:  
  7. passwd: password updated successfully 

切換到gitAdmin用戶,創建用戶密鑰,代碼如下:

  1. root@letuknowit:~# su - gitAdmin  
  2. gitAdmin@letuknowit:~$ mkdir .ssh 
  3. gitAdmin@letuknowit:~$ ll 
  4. total 24 
  5. drwxr-xr-x 3 gitAdmin gitAdmin 4096 Aug 20 10:48 ./ 
  6. drwxr-xr-x 9 root     root     4096 Aug 20 10:46 ../ 
  7. -rw-r--r-- 1 gitAdmin gitAdmin  220 Apr  3  2012 .bash_logout 
  8. -rw-r--r-- 1 gitAdmin gitAdmin 3486 Apr  3  2012 .bashrc 
  9. -rw-r--r-- 1 gitAdmin gitAdmin  675 Apr  3  2012 .profile 
  10. drwxrwxr-x 2 gitAdmin gitAdmin 4096 Aug 20 10:48 .ssh/ 
  11. gitAdmin@letuknowit:~$ ssh-keygen -f .ssh/gitAdmin 
  12. Generating public/private rsa key pair. 
  13. Enter passphrase (empty for no passphrase):  
  14. Enter same passphrase again:  
  15. Your identification has been saved in .ssh/gitAdmin. 
  16. Your public key has been saved in .ssh/gitAdmin.pub. 
  17. The key fingerprint is
  18. 84:a0:9d:d6:c6:43:57:0e:22:cd:67:97:8e:03:be:09 gitAdmin@letuknowit 
  19. The key's randomart image is
  20. +--[ RSA 2048]----+ 
  21. |    ooo o...     | 
  22. |   o B++ooo      | 
  23. |  . +.*+.+.      | 
  24. |   .E..oo .      | 
  25. |     . oS.       | 
  26. |      o          | 
  27. |                 | 
  28. |                 | 
  29. |                 | 
  30. +-----------------+ 

接下來將管理員公鑰(gitAdmin.pub)復制 到服務器上的 git 用戶的家目錄下,因為我們這個服務器和客戶端是在一起的,所以就方便了,如果是兩臺機器的話,你可能要想點辦法去拷貝這個文件了,代碼如下:

  1. gitAdmin@letuknowit:~$ exit 
  2. logout 
  3. root@letuknowit:~# cp /home/gitAdmin/.ssh/gitAdmin.pub /home/git/ 
  4. root@letuknowit:~# ll /home/git 
  5. total 36 
  6. drwxr-xr-x 4 git  git  4096 Aug 20 10:53 ./ 
  7. drwxr-xr-x 9 root root 4096 Aug 20 10:46 ../ 
  8. -rw------- 1 git  git   788 Aug 20 10:45 .bash_history 
  9. -rw-r--r-- 1 git  git   220 Apr  3  2012 .bash_logout 
  10. -rw-r--r-- 1 git  git  3486 Apr  3  2012 .bashrc 
  11. drwxrwxr-x 2 git  git  4096 Aug 20 10:44 bin/ 
  12. -rw-r--r-- 1 root root  412 Aug 20 10:53 gitAdmin.pub 
  13. drwxr-xr-x 6 git  git  4096 Aug 20 10:40 gitolite/ 
  14. -rw-r--r-- 1 git  git   675 Apr  3  2012 .profile 

第三步,服務器端配置 Gitolite 服務器,再回到服務器端,用從客戶端復制過來的 Gitolite 管理員用戶公鑰,gitAdmin.pub,配置 Gitolite 服務器,代碼如下:

  1. root@letuknowit:~# su - git 
  2. git@letuknowit:~$ gitolite setup -pk gitAdmin.pub  
  3. Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
  4. Initialized empty Git repository in /home/git/repositories/testing.git/ 
  5. WARNING: /home/git/.ssh missing; creating a new one 
  6.     (this is normal on a brand new install) 
  7. WARNING: /home/git/.ssh/authorized_keys missing; creating a new one 
  8.     (this is normal on a brand new install) 
  9. git@letuknowit:~$ ll 
  10. total 60 
  11. drwxr-xr-x 7 git  git  4096 Aug 20 10:57 ./ 
  12. drwxr-xr-x 9 root root 4096 Aug 20 10:46 ../ 
  13. -rw------- 1 git  git   788 Aug 20 10:45 .bash_history 
  14. -rw-r--r-- 1 git  git   220 Apr  3  2012 .bash_logout 
  15. -rw-r--r-- 1 git  git  3486 Apr  3  2012 .bashrc 
  16. drwxrwxr-x 2 git  git  4096 Aug 20 10:44 bin/ 
  17. -rw-r--r-- 1 root root  412 Aug 20 10:53 gitAdmin.pub 
  18. drwxr-xr-x 6 git  git  4096 Aug 20 10:40 gitolite/ 
  19. drwx------ 6 git  git  4096 Aug 20 10:57 .gitolite/ 
  20. -rw------- 1 git  git  6662 Aug 20 10:57 .gitolite.rc 
  21. -rw-r--r-- 1 git  git   675 Apr  3  2012 .profile 
  22. -rw------- 1 git  git    12 Aug 20 10:57 projects.list 
  23. drwx------ 4 git  git  4096 Aug 20 10:57 repositories/ 
  24. drwx------ 2 git  git  4096 Aug 20 10:57 .ssh/ 

你會看到在git用戶的家目錄下多了很多的文件夾,具體請看上面ll命令的結果.

第四步,客戶端驗證Gitolite管理員賬戶訪問服務器的別名以及驗證別名是否成功,代碼如下:

  1. git@letuknowit:~$ exit 
  2. logout 
  3. root@letuknowit:~# su - gitAdmin 
  4. gitAdmin@letuknowit:~$ ll .ssh/ 
  5. total 16 
  6. drwxrwxr-x 2 gitAdmin gitAdmin 4096 Aug 20 10:49 ./ 
  7. drwxr-xr-x 3 gitAdmin gitAdmin 4096 Aug 20 10:53 ../ 
  8. -rw------- 1 gitAdmin gitAdmin 1679 Aug 20 10:49 gitAdmin 
  9. -rw-r--r-- 1 gitAdmin gitAdmin  412 Aug 20 10:49 gitAdmin.pub 
  10. gitAdmin@letuknowit:~$ vi .ssh/config 

切換到gitAdmin賬戶,在.ssh文件夾下新建config文件,輸入下面內容:

  1. host git 
  2.         user git 
  3.         hostname xxx.xxx.xxx.xxx 
  4.         port 22 
  5.         identityfile ~/.ssh/gitAdmin 

host:隨便定義,用于客戶端標識所連接服務端的名字;

user:ssh登錄服務器的賬戶,就是服務器端的那個git專用賬戶的用戶名;

hostname:服務器主機名,或者直接填寫服務器 IP 地址;

port:服務器的ssh訪問端口,默認22;

identityfile:管理員登錄服務器所使用的驗證密鑰;

使用服務器別名從 Gitolite 服務器 clone Gitolite 服務器管理倉庫 gitolite-admin,驗證別名配置是否成功,代碼如下:

  1. gitAdmin@letuknowit:~$ git clone git:gitolite-admin 
  2. Cloning into 'gitolite-admin'... 
  3. The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established. 
  4. ECDSA key fingerprint is c1:c2:6a:7a:68:c8:e5:a6:87:f4:9b:95:d5:fd:ff:09. 
  5. Are you sure you want to continue connecting (yes/no)? yes 
  6. Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.  --Vevb.com 
  7. remote: Counting objects: 6, done. 
  8. remote: Compressing objects: 100% (4/4), done. 
  9. Receiving objects: 100% (6/6), 763 bytes, done. 
  10. remote: Total 6 (delta 0), reused 0 (delta 0) 

第五步,客戶端給普通用戶創建訪問 Gitolite 服務器的密鑰.

系統里已經有一個kris的賬戶了,如果沒有的話,可以自己創建一個,名字隨便取,先通過ssh-keygen創建密鑰,代碼如下:

  1. gitAdmin@letuknowit:~$ exit 
  2. logout 
  3. root@letuknowit:~# su - kris 
  4. kris@letuknowit:~$ ssh-keygen -f .ssh/kris 
  5. Generating public/private rsa key pair. 
  6. Enter passphrase (empty for no passphrase):  
  7. Enter same passphrase again:  
  8. Your identification has been saved in .ssh/kris. 
  9. Your public key has been saved in .ssh/kris.pub. 
  10. The key fingerprint is
  11. 18:7c:21:e8:7b:4c:2a:d9:b2:e2:eb:db:5b:94:65:49 kris@letuknowit 
  12. The key's randomart image is
  13. +--[ RSA 2048]----+ 
  14. |     ..E.        | 
  15. |    ......       | 
  16. |   .  o+.        | 
  17. |    . =+         | 
  18. |   o B. S        | 
  19. |  + = o          | 
  20. |   + o           | 
  21. |. o .            | 
  22. |o*oo.            | 
  23. +-----------------+ 
  24. kris@letuknowit:~$ ll .ssh/ 
  25. total 20 
  26. drwx------ 2 kris kris 4096 Aug 20 11:22 ./ 
  27. drwxr-xr-x 9 kris kris 4096 Aug 20 09:56 ../ 
  28. -rw-r--r-- 1 kris kris  442 Nov 20  2013 known_hosts 
  29. -rw------- 1 kris kris 1679 Aug 20 11:22 kris 
  30. -rw-r--r-- 1 kris kris  410 Aug 20 11:22 kris.pub 

復制用戶公鑰(kris.pub)給 Gitolite 管理員(gitAdmin),代碼如下:

  1. kris@letuknowit:~$ exit 
  2. logout                
  3. root@letuknowit:~# cp /home/kris/.ssh/kris.pub /home/gitAdmin/gitolite-admin/keydir/ 
  4. root@letuknowit:~# ll !$ 
  5. ll /home/gitAdmin/gitolite-admin/keydir/ 
  6. total 16 
  7. drwxrwxr-x 2 gitAdmin gitAdmin 4096 Aug 20 12:09 ./ 
  8. drwxr-xr-x 5 gitAdmin gitAdmin 4096 Aug 20 11:19 ../ 
  9. -rw-rw-r-- 1 gitAdmin gitAdmin  412 Aug 20 11:19 gitAdmin.pub 
  10. -rw-r--r-- 1 root     root      410 Aug 20 12:09 kris.pub 

使用公鑰(kris.pub)為用戶 kris 創建一個他能訪問的 Git 倉庫,代碼如下:

  1. gitAdmin@letuknowit:~/gitolite-admin$ git add . 
  2. gitAdmin@letuknowit:~/gitolite-admin$ git status -s 
  3. M  conf/gitolite.conf 
  4. A  keydir/kris.pub 
  5. gitAdmin@letuknowit:~/gitolite-admin$ git commit -m "add user kris by kris.git and create a repo letu for it" 
  6. *** Please tell me who you are. 
  7. Run 
  8.   git config --global user.email "you@example.com" 
  9.   git config --global user.name "Your Name" 
  10. to set your account's default identity. 
  11. Omit --global to set the identity only in this repository. 
  12. fatal: empty ident  <gitAdmin@letuknowit.(none)> not allowed 

這里需要先配置下用戶名和email,否則會給出錯誤提示,代碼如下:

  1. gitAdmin@letuknowit:~/gitolite-admin$ git config --global user.email "xxx@163.com" 
  2. gitAdmin@letuknowit:~/gitolite-admin$ git config --global user.name "kris" 
  3. gitAdmin@letuknowit:~/gitolite-admin$ git commit -m "add user kris by kris.git and create a repo letu for it" 
  4. [master ef0bde9] add user kris by kris.git and create a repo letu for it 
  5.  2 files changed, 4 insertions(+) 
  6.  create mode 100644 keydir/kris.pub 
  7. gitAdmin@letuknowit:~/gitolite-admin$ git status  
  8. On branch master 
  9. # Your branch is ahead of 'origin/master' by 1 commit
  10. nothing to commit (working directory clean) 
  11. gitAdmin@letuknowit:~/gitolite-admin$ git push origin master  
  12. Counting objects: 10, done. 
  13. Delta compression using up to 2 threads. 
  14. Compressing objects: 100% (5/5), done. 
  15. Writing objects: 100% (6/6), 840 bytes, done. 
  16. Total 6 (delta 0), reused 0 (delta 0) 
  17. remote: Initialized empty Git repository in /home/git/repositories/letu.git/ 
  18. To git:gitolite-admin 
  19.    b19c84d..ef0bde9  master -> master 

切換到擁有私鑰(~/.ssh/kris)的用戶 kris,嘗試使用私鑰 clone “letu”這個git庫,代碼如下:

  1. gitAdmin@letuknowit:~/gitolite-admin$ exit 
  2. logout 
  3. root@letuknowit:~# su - kris 
  4. kris@letuknowit:~$ ll .ssh/ 
  5. total 20 
  6. drwx------ 2 kris kris 4096 Aug 20 11:22 ./ 
  7. drwxr-xr-x 9 kris kris 4096 Aug 20 09:56 ../ 
  8. -rw-r--r-- 1 kris kris  442 Nov 20  2013 known_hosts 
  9. -rw------- 1 kris kris 1679 Aug 20 11:22 kris 
  10. -rw-r--r-- 1 kris kris  410 Aug 20 11:22 kris.pub 
  11. kris@letuknowit:~$ vi .ssh/config 

為了方便,我們這里也給kris用戶配置一個訪問別名,輸入以下內容后保存,代碼如下:

  1. host kris 
  2.      user git 
  3.      hostname xxx.xxx.xxx.xxx 
  4.      port 22 
  5.      identityfile ~/.ssh/kris 

下面就可以clone 之前添加的letu這個git庫了,代碼如下:

  1. kris@letuknowit:~/$ git clone kris:letu 
  2. Cloning into 'letu'... 
  3. warning: You appear to have cloned an empty repository. 
  4. kris@letuknowit:~$ cd letu/ 
  5. kris@letuknowit:~/letu$ git status  
  6. On branch master 
  7. # Initial commit 
  8. nothing to commit (create/copy files and use "git add" to track) 
  9. kris@letuknowit:~/letu$ echo "Hello git" > init.txt 
  10. kris@letuknowit:~/letu$ git add . 
  11. kris@letuknowit:~/letu$ git status . 
  12. On branch master 
  13. # Initial commit 
  14. # Changes to be committed
  15. #   (use "git rm --cached ..." to unstage) 
  16. # new file:   init.txt 
  17. kris@letuknowit:~/letu$ git commit -m "Init repo" 
  18. kris@letuknowit:~/letu$ git push origin master

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 原平市| 武胜县| 栾川县| 武冈市| 沁阳市| 汉阴县| 绍兴县| 朝阳县| 巫溪县| 科技| 科技| 西充县| 万山特区| 六安市| 穆棱市| 洪洞县| 浦东新区| 罗山县| 洛宁县| 巴马| 恩施市| 泗阳县| 汉阴县| 蒙阴县| 红桥区| 信阳市| 吉木萨尔县| 鄢陵县| 石阡县| 裕民县| 泽州县| 正阳县| 驻马店市| 大竹县| 内乡县| 武清区| 株洲市| 呼图壁县| 衡阳市| 涟水县| 湖北省|