生活随笔
收集整理的這篇文章主要介紹了
在centos 下安装配置基于gitosis 的git 服务
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言 這里我用的系統是centos 6.2,
在服務器上的準備工作(服務器IP為10.0.2.8 ): 1、安裝 openssh服務器與客戶端工具
[plain] view plaincopy
$?sudo?yum?install?openssh-server?openssh-client??
2、創建個人公鑰和私鑰(用于后面的git服務的管理員管理) 在默認用戶的主目錄路徑下,運行以下命令,按照提示創建公鑰和私鑰
[plain] view plaincopy
$?ssh-keygen?-t?rsa?? 默認生成2048位,如果需要提高安全級別,也可以通過下面的命令創建公鑰和私鑰
[html] view plaincopy
ssh-keygen?-t?rsa?-b?4096?? 默認情況下,公鑰和私鑰會保存在~/.ssh目錄下,如下所示:
3、安裝 git服務器
[plain] view plaincopy
$??sudo?yum?install?git-core?? 4、配置 git服務器 創建git服務器管理用戶
[plain] view plaincopy
$??sudo?useradd?-m?git??? $??sudo?passwd?git?? 創建git倉庫存儲目錄
[plain] view plaincopy
$??sudo?mkdir?/home/git/repositories?? 設置git倉庫權限
[plain] view plaincopy
$??sudo?chown?git:git?/home/git/repositories??? $??sudo?chmod?755?/home/git/repositories?? 初始化全局設置
[plain] view plaincopy
$??git?config?--global?user.name?"myname"??? $??git?config?--global?user.email?"myname@server"?? 5、安裝python的setup tool?
[plain] view plaincopy
$??sudo?yum?install?python-setuptools?? 6、獲取并安裝gitosis
[plain] view plaincopy
$??cd?/tmp??? $??git?clone?git://eagain.net/gitosis.git?//測試時從這拿不到,可換成?git?clone?https://github.com/res0nat0r/gitosis.git???? $??cd?gitosis??? $??sudo?python?setup.py?install??
7、配置gitosis
[plain] view plaincopy
$??cp?~/.ssh/id_rsa.pub?/tmp?//上面第2步生成的公匙?? $??sudo?-H?-u?git?gitosis-init?<?/tmp/id_rsa.pub //將該公匙導入gitosis里,這時本機已經有了為git的管理權限了?? $??sudo?chmod?755?/home/git/repositories/gitosis-admin.git/hooks/post-update?? 為了git操作時不用輸入密碼,還要做以下配置
[plain] view plaincopy
$??cat?/tmp/id_dsa.pub?>>?/home/git/.ssh/authorized_keys?//將root的公匙導入到git目錄的?authorized_keys文件中?? $??chmod?600?/home/git/.ssh/authorized_keys?? ??? ?
8、管理gitosis配置
[plain] view plaincopy
$?cd?~??? $?git?clone?git@hostname:/gitosis-admin.git??? $?cd?gitosis-admin/?? $?ls?-al?? 看到以下結果
gitosis.conf是git倉庫與權限配文件,keydir目錄是存放其它客戶機的公匙目錄。
如果無法git clone的話,可以使用 git clone git@xxx:/home/git/repositories/gitosis-admin.git 如果在git push的時候,遇到錯誤“ddress 192.168.0.77 maps to bogon, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!”,解決為修改/etc/hosts文件,將ip地址與主機名對應關系寫進去就可以了。
[plain] view plaincopy
$??more?gitosis.conf?? gitosis.conf 對應的內容
[plain] view plaincopy
[gitosis]?? ?? [group?gitosis-admin]?? writable?=?gitosis-admin?? members?=?root@localhost.localdomain?? 來這里git的服務已基本配置完畢,但要團隊開發中用起來還要進以下配置:
在成員機(ip=10.0.2.100)上操上面第1與第2步生成自已的公匙,
[html] view plaincopy
$??scp?.ssh/id_rsa.pub?root@10.0.2.8:~/gitosis-admin/keydir/tester.pub?//將本機的公匙copy到gitosis的keydir中?? 再切換到git服務上(ip=10.0.2.8)
[plain] view plaincopy
$??cd?~?? $??cd?gitosis-admin?? $??cat?keydir/tester.pub?>>?/home/git/.ssh/authorized_keys?//將tester的公匙導入到git目錄的?authorized_keys文件中?? $?vi?gitosis.conf?? 修改gitosis.conf
[plain] view plaincopy
[gitosis]?? [group?gitosis-admin]?? writable?=?gitosis-admin?? members?=?root@localhost.localdomain?? #加一個組myteam?? [group?myteam]?? members?=?tester?#這里的tester對上面公匙文件名?? writable?=?test_project?#項目倉庫名?? 提交到版本庫
[plain] view plaincopy
$?git?add?keydir/tester.pub?? $?git?commit?-a?-m?"Allow?tester?write?access?to?test_project"?? $?git?push?origin?master?? 這時tester便有權限操作test_project倉庫了,回到成員機(ip=10.0.2.100)上
[plain] view plaincopy
$?cd?~?? $?mkdir?test_project?? $?cd?test_project?? $?echo?"testing?">test.txt?? $?git?init?//初始化本地版本?? $?git?remote?add?origin?git@10.0.2.8:test_project.git //加到遠程版本庫中?? $?git?add?.?? $?git?commit?-a?-m?"哈哈哈,測試一下"??? $?git?push?origin?master?? 也可以把上面的兩步合成一步
$ git push git@xxx:project1.git master
說明:如果在執行 git push origin master 的時候,提示以下錯誤: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 這是由于項目為空的原因,我們在項目目錄里新創建一個文件。經過->add -> commit -> push 就可以解決了
$ touch a.txt
$ git add a.txt
$ git commit -a -m
' add a.txt '
$ git push
換個目錄看能否clone回來
[plain] view plaincopy
$?cd?/tmp?? $?git?clone?git@10.0.2.8:test_project.git?//此時應該不會提示輸入ssh密碼的??
error: cannot run ssh: No such file or directory - cygwin git ”錯誤,則表示本機沒有安裝ssh命令。安裝方法請參考:http://blog.haohtml.com/archives/13313 有時候我們要更換電腦來重新開發項目。這個時候,只需要將id_rsa私鑰放在home目錄里的.ssh目錄里就可以了。(有時候一個人開發多個項目,這時候可能會提示id_rsa文件已經存在。不太清楚這里如何解決??? )
?
常見問題 首先確定 /home/git/repositories/gitosis-admin.git/hooks/post-update 為可執行即屬性為 0755
1. git操作需要輸入密碼 原因
公密未找到 解決
上傳id_rsa.pub到keydir并改為'gitosis帳號.pub'形式,如miao.pub。擴展名.pub不可省略 2. ERROR:gitosis.serve.main:Repository read access denied 原因
gitosis.conf中的members與keydir中的用戶名不一致,如gitosis中的members = foo@bar,但keydir中的公密名卻叫foo.pub 解決
使keydir的名稱與gitosis中members所指的名稱一致。 改為members = foo 或 公密名稱改為foo@bar.pub
轉載于:https://www.cnblogs.com/breg/p/3675294.html
總結
以上是生活随笔 為你收集整理的在centos 下安装配置基于gitosis 的git 服务 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。