搭建git服務器的經驗總結
一: Server端的設置
1. 安裝 git, git-core
2. 安裝 ssh-server. (代碼上傳通道)
3. 創建git 用戶 指定其目錄 和所在組
4. 在git的home目錄下創建 repo_name.git 目錄
5. 在git home 目錄下 初始化repo_name.git 的服務器端裸倉庫: git init --bare --shared Repo_name.git (默認生成一個master分支)
6. 搜集用戶的ssh public key ,放入到 .ssh 目錄下,以實現ssh自動登陸,此過程較為復雜,分為兩大步驟:
1.配置sshd_config文件並重啟sshd,
2.將用戶上傳的rsa pub key 添加到authorized_keys文件中。
詳細過程參見 ”
三: ssh的受信用戶的添加 “
7. 添加遠程倉庫的develop / release分支: git branch develop ;
8. 搭建gitweb, 用於方便開發者在線查看git提交與修改。參見 "
四:搭建gitweb的方法 " ; 本步驟可選。
二:git客戶端使用方法
0. 客戶端: ssh-keygen -t rsa 生成密鑰
1. 客戶端: 將生成的id_rsa.pub 傳給git管理者。對應於Server端的第六點。
2.客戶端 : git clone git@172.26.186.177:/home/git/Repo_name.git
3.客戶端: 添加代碼
4.客戶端: git status ; git add . ; git commit -m "comment for each commit"
5.客戶端: 添加遠程倉庫: git remote add remote_server_name git@172.26.186.117:/home/git/repo_name.git 本地:git remote add local D:\\code\\reponame.git
6.客戶端: 配置git config --global, 對於你的每次提交都是必須的,這樣在git server端的gitweb網站上可以清楚地看到誰提交了,email多少。
1. $ git config --global user.name wangwang
2. $ git config --global user.email
wangwang@tec.com
7.客戶端: push 本地代碼到 遠程倉庫的指定分支: git push remote_server_name local_branch_name:remote_branch_name ; (此時可以指定提交到遠程分支的develop 還是 master)
三: ssh的受信用戶的添加
為實現ssh自動登陸,需搜集用戶的ssh public key ,放入到 .ssh 目錄下的authorized_keys文件末尾,此過程較為復雜,分為兩大步驟:
1.配置sshd_config文件並重啟sshd,
2.將用戶上傳的rsa pub key 添加到authorized_keys文件中。
詳細過程如下:
I. 配置sshd_config文件,並重啟:
1. su root ;sshd_config位於/etc/ssh/ 文件夾下,需要使用root權限,同時如果出現 could not load host key: rsa_key dsa_key ecdsa_key, 也是由於這個原因,因為這三個文件只有root用戶擁有讀權限。
2. vim sshd_config
3. 取消AuthorizedKeysFile的注釋,並修改為 AuthorizedKeysFile /home/git/.ssh/authorized_keys
4.重啟sshd : /usr/sbin/sshd
II. 上傳rsa pub key, 並將其添加到authorized_keys文件中。
- scp id_rsa.pub git@172.26.186.117:/home/git/ ; 遠程拷貝
- mv id_rsa.pub rename.pub ; 重命名以避免與。ssh文件夾中的已有文件重名。
- mv rename.pub .ssh/ ; 移動到.ssh
- cat rename.pub >> authorized_keys ; 將該用戶 添加到受信任的ssh-rsa 列表中, 很多人將此authorized_keys誤認為是文件夾,從而導致添加后,客戶端登陸依然失敗。
注意:如果用戶的id_rsa.pub 已經加入到authorized_keys, 但 git clone git@172.26.186.117:/home/git/PmsAndroid.git 后出現如下的提示信息
Agent admitted failure to sign using the key.
git@172.26.186.117's password:
git@172.26.186.117's password:
則說明授權驗證的ssh-agent 沒有將密鑰隨着請求, 需要使用ssh-add 來添加, 若ssh-add添加失敗,請先運行ssh-agent 。
四:搭建gitweb的方法
1. 在一個倉庫目錄下,使用git instaweb 命令即可啟動運行。
默認是在1234端口。
五: 搭建gitosis / gitblit ,以方便管理員遠程管理git server 的repostries。
六: git Server端 repo的訪問權限控制