<th id="1dxm2"><option id="1dxm2"></option></th><object id="1dxm2"></object>

<th id="1dxm2"><video id="1dxm2"></video></th>
    <th id="1dxm2"><option id="1dxm2"></option></th>

    <nav id="1dxm2"></nav>

  1. <object id="1dxm2"></object>
        1. 0712-2888027 189-8648-0214
          微信公眾號

          孝感風信網絡科技有限公司微信公眾號

          當前位置:主頁 > 技術支持 > Linux > 在CentOS下搭建自己的Git服務器

          在CentOS下搭建自己的Git服務器

          時間:2023-05-31來源:風信官網 點擊: 1838次

          首先需要裝好CentOS系統,作為測試,你可以選擇裝在虛擬機上,這樣比較方便。這步默認你會,就不講了。
          有了CentOS,那么如何搭建Git服務器呢?
          1、首先需要安裝Git,可以使用yum源在線安裝:

          [root@localhost Desktop]# yum install -y git
          

          2、創建一個git用戶,用來運行git服務

          # adduser git  
          

          3、初始化git倉庫:這里我們選擇/data/git/learngit.git來作為我們的git倉庫

          [root@localhost git]# git init --bare learngit.git  
          Initialized empty Git repository in /data/git/learngit.git/  
          

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

          [root@localhost git]# chown git:git learngit.git  
          

          4、在這里,Git服務器就已經搭得差不多了。下面我們在客戶端clone一下遠程倉庫

          Zhu@XXX /E/testgit/8.34
          $ 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添加到本機的一個信任列表里了:

          Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
          

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

          5、創建SSH Key
          首先在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:

          $ ssh-keygen -t rsa -C "youremail@example.com"  
          

          你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,由于這個Key也不是用于軍事目的,所以也無需設置密碼。

          如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

          6、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.
          

          7、禁用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每次一登錄就自動退出。

          熱門關鍵詞: CentOS 搭建 Git服務器
          欄目列表
          推薦內容
          熱點內容
          展開
          特级欧美a片免费观看

          <th id="1dxm2"><option id="1dxm2"></option></th><object id="1dxm2"></object>

          <th id="1dxm2"><video id="1dxm2"></video></th>
            <th id="1dxm2"><option id="1dxm2"></option></th>

            <nav id="1dxm2"></nav>

          1. <object id="1dxm2"></object>