1. 程式人生 > >配置git服務器

配置git服務器

打開 並且 warn email bar 今天 兩個 真的 客戶端

想安裝一個優良的版本控制工具。今天試了一下安裝git。安裝過程很簡單,配置過程全是淚,先記錄一下,以後在解決公鑰沒有起作用的原因

老規矩,查看是否有git:

# git --version

沒有發現

1、安裝git

# yum install git

接下來我們 創建一個git用戶組和用戶,用來運行git服務:

# groupadd git

# adduser git -g git

# passwd git //修改git用戶的密碼

2、創建我們的git倉庫

# cd /home

# mkdir gitrepo

# chown git:git gitrepo/

# cd gitrepo

# git init --bare /home/gitpro/project.git

Initialized empty Git repository in /home/gitpro/project.git/

執行以上命令,會創建一個裸倉庫,裸倉庫沒有工作區,因為服務器上的Git倉庫純粹是為了共享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。

然後,把owner改為git:

# chown -R git:git project.git

3、 安裝完成,下面我們在客戶端clone一下遠程倉庫,測試一下(win下的git bash)

$ git clone [email protected]:/home/gitpro/project.git

Cloning into ‘project‘...
The authenticity of host ‘192.168.90.21 (192.168.90.21)‘ can‘t be established.
RSA key fingerprint is 87:31:a6:23:f2:e4:4d:91:a4:2e:d9:ff:51:42:33:46.

Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.90.21‘ (RSA) to the list of known hosts.
[email protected]‘s password:

這裏兩點需要註意:

第一,當你第一次使用Git的clone或者push命令連接GitHub時,會得到一個警告:
The authenticity of host ‘github.com (xx.xx.xx.xx)‘ can‘t be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub服務器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車即可。
Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了:
Warning: Permanently added ‘github.com‘ (RSA) to the list of known hosts.

這個警告只會出現一次,後面的操作就不會有任何警告了。
如果你實在擔心有人冒充GitHub服務器,輸入yes前可以對照GitHub的RSA Key的指紋信息是否與SSH連接給出的一致。
第二,這裏提示你輸入密碼才能clone,當然如果你知道密碼,可以鍵入密碼來進行clone,但是更為常見的方式,是利用SSH的公鑰來完成驗證。

4、創建本地電腦的ssh key

看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。

如果沒有,打開Shell(Windows下打開Git Bash)

創建SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"

你需要把郵件地址換成你自己的郵件地址,然後一路回車,使用默認值即可,由於這個Key也不是用於軍事目的,所以也無需設置密碼。
如果一切順利的話,可以在用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

5、git服務器打開RSA認證

# vim/etc/ssh/sshd_config中將RSA認證打開,即:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

這裏我們可以看到公鑰存放在.ssh/authorized_keys文件中。

6、創建登陸的證書(存放本地電腦公鑰的地方,免密的)

收集所有需要登錄的用戶的公鑰,公鑰位於id_rsa.pub文件中,把我們的公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個。
如果沒有該文件創建它:
$ cd /home/git/
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys

然後導入公鑰,(註意公鑰不能直接粘貼進去,只能導入)

正常的話,之後再次clone的時候,或者是之後push的時候,就不需要再輸入密碼了:

============================================================================================

然後就出現問題了:

$ git clone [email protected]:/home/gitpro/project.git
Cloning into ‘project‘...
[email protected]‘s password:

也沒報錯,輸入密碼也沒問題。就是不能免密!=======================================================

這裏發出來希望大家看看還有哪些可以查找問題的地方。幫我解決一下

===========================================================================================

配置git服務器