git服務器搭建


1. 建立git用戶html

    useradd git   git

    passwd git github

2. 創建一個ssh的訪問控制文件,這個文件默認不存在的,須要本身手動添加,路徑爲 /home/git/.ssh/authorized_keys (這個文件的權限644shell

    這個文件的路徑是在ssh服務器配置中指定的(/etc/ssh/sshd_config), 這個受權文件保存的是須要訪問git服務器的客戶端ssh key值。經過命令ssh-keygen -t rsa 便可生成.ssh目錄及文件id_rsa和id_rsa.pub,將客戶端id_rsa.pub文件中的內容拷貝到authorized_keys文件中便可。centos

     

3.  在服務器上創建一個git庫目錄 如 /home/git/gitSrv , 在目錄中初始化一個空庫bash

        git init  --bare sample.git      --bare代表只用版本記錄文件,沒有工做區,沒有實際保存的可讀源文件。(裸倉庫)服務器

        裸倉庫沒有工做區,由於服務器上的Git倉庫純粹是爲了共享,因此不讓用戶直接登陸到服務器上去改工做區,而且服務器上的Git倉庫一般都以.git結尾。而後將這個文件的歸屬設置爲git用戶(若是已是git用戶的就再也不操做了)ssh

        chown -R git:git sampl.git centos7

   

4. 將git用戶的登陸默認shell改爲git-shell,使用管理員權限編輯/etc/passwdspa

    將git:x:1001:1001:,,,:/home/git:/bin/bash 改成:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  (git-shell是安裝git時產生的,須要指定對應git-shell的路徑,用戶能夠正常經過ssh使用git,但沒法登陸shell)

 

        

備註:

    1. 生成ssh密鑰: ssh-keygen -t rsa   建議使用默認的文件路徑和無密碼(直接兩次回車)

    2. 生成的密鑰傳到git服務器上,可使用scp命令

            scp localFile   remoteUserName@remoteIp:remoteDIrPath/remoteFileName 傳遞某個文件到遠端

            scp remoteUser@remoteIp:remotePath  localPath  從遠端下載某個文件到本地

            scp localDir -r   remoteUserName@remoteIp:remoteDIrPath  傳遞整個目錄到遠端

    3. ssh服務重啓命令:

            centos7下  systemctl restart sshd.service

    4.  cat 向某個文件末尾追加信息而且主動換行。添加多個用戶的rsa key值得時候可使用 cat a.txt  >> b.txt 向b後添加a的內容

    5.  當配置完後使用ssh沒法鏈接服務器,檢查/etc/ssh/sshd_config文件下的以下配置項

        RSAAuthentication yes
        PubkeyAuthentication yes
        PasswordAuthentication yes

    6. git status中文亂序解決: git config --global core.quotepath false

    7. 若是團隊過大,每一個人 的權限都要放到authorized_keys中就有點麻煩了,這個時候使用gitolite來管理每一個人的ssh公鑰,

    並能夠指定一些列的訪問權限。

        https://github.com/sitaramc/gitolite

 

參考:

    https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664

    http://www.javashuo.com/article/p-xpitgsvj-de.html

    http://www.javashuo.com/article/p-udxikqhx-dm.html

    http://www.javashuo.com/article/p-dkfhtffc-bk.html

相關文章
相關標籤/搜索