引子:http://www.javashuo.com/article/p-qszfmmbi-dn.htmlhtml
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel $ yum install git
接下來咱們 建立一個git用戶組和用戶,用來運行git服務:
$ groupadd git $ useradd git -g git
收集全部須要登陸的用戶的公鑰,公鑰位於id_rsa.pub文件中,把咱們的公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個。git
若是沒有該文件建立它:github
$ cd /home/git/ $ mkdir .ssh $ chmod 755 .ssh $ touch .ssh/authorized_keys $ chmod 644 .ssh/authorized_keys
首先咱們選定一個目錄做爲Git倉庫,假定是/home/gitrepo/learngit.git,在/home/gitrepo目錄下輸入命令:shell
$ cd /home $ mkdir gitrepo $ chown git:git gitrepo/ $ cd gitrepo $ git init --bare learngit.git Initialized empty Git repository in /home/gitrepo/learngit.git/
以上命令Git建立一個空倉庫,服務器上的Git倉庫一般都以.git結尾。而後,把倉庫所屬用戶改成git:
$ chown -R git:git learngit.git
$ git clone git@192.168.1.101:/home/gitrepo/learngit.git Cloning into 'learngit'... warning: You appear to have cloned an empty repository. Checking connectivity... done.
可能會提示錯誤 以下信息:
$ git clone git@192.168.8.34:/data/git/learngit.git Cloning into 'learngit'... The authenticity of host '192.168.8.34 (192.168.8.34)' can't be established. RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.8.34' (RSA) to the list of known hosts. git@192.168.8.34'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添加到本機的一個信任列表裏了:ruby
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
這個警告只會出現一次,後面的操做就不會有任何警告了。
若是你實在擔憂有人冒充GitHub服務器,輸入yes前能夠對照GitHub的RSA Key的指紋信息是否與SSH鏈接給出的一致。
第二,這裏提示你輸入密碼才能clone,固然若是你知道密碼,能夠鍵入密碼來進行clone,可是更爲常見的方式,是利用SSH的公鑰來完成驗證。bash
五、建立SSH Key
首先在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:服務器
$ ssh-keygen -t rsa -C "youremail@example.com"
你須要把郵件地址換成你本身的郵件地址,而後一路回車,使用默認值便可,因爲這個Key也不是用於軍事目的,因此也無需設置密碼。app
若是一切順利的話,能夠在用戶主目錄裏找到.ssh目錄,裏面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。
六、Git服務器打開RSA認證
而後就能夠去Git服務器上添加你的公鑰用來驗證你的信息了。在Git服務器上首先須要將/etc/ssh/sshd_config中將RSA認證打開,即:
1.RSAAuthentication yes 2.PubkeyAuthentication yes 3.AuthorizedKeysFile .ssh/authorized_keys
這裏咱們能夠看到公鑰存放在.ssh/authorized_keys文件中。因此咱們在/home/git下建立.ssh目錄,而後建立authorized_keys文件,並將剛生成的公鑰導入進去。
而後再次clone的時候,或者是以後push的時候,就不須要再輸入密碼了:
Zhu@XXX/E/testgit/8.34 $ git clone git@192.168.8.34:/data/git/learngit.git Cloning into 'learngit'... warning: You appear to have cloned an empty repository. Checking connectivity... done.
七、禁用git用戶的shell登錄
出於安全考慮,第二步建立的git用戶不容許登陸shell,這能夠經過編輯/etc/passwd文件完成。找到相似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最後一個冒號後改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
這樣,git用戶能夠正常經過ssh使用git,但沒法登陸shell,由於咱們爲git用戶指定的git-shell每次一登陸就自動退出。
經常使用命令:
git init // 初始化版本庫
git add . // 添加文件到版本庫(只是添加到緩存區),.表明添加文件夾下全部文件
git commit -m "first commit" // 把添加的文件提交到版本庫,並填寫提交備註
到目前爲止,咱們完成了代碼庫的初始化,但代碼是在本地,尚未提交到遠程服務器,因此關鍵的來了,要提交到就遠程代碼服務器,進行如下兩步:
git remote add origin git@192.168.1.101:/home/gitrepo/runoob.git (你的遠程庫地址)// 把本地庫與遠程庫關聯
git push -u origin master // 第一次推送時
git push origin master // 第一次推送後,直接使用該命令便可推送修改
把本地庫的內容推送到遠程。使用 git push命令,其實是把當前分支master推送到遠程。執行此命令後會要求輸入用戶名、密碼,驗證經過後即開始上傳。 說明:用戶名密碼須要經過命令 ssh-keygen -t rsa -C 「xxxxxx@qq.com」進行建立,而且要把獲得的祕鑰(公鑰)文件放到git服務器上,這樣纔有權限進行代碼推送