1. 建立git用戶html
useradd git git
passwd git github
2. 創建一個ssh的訪問控制文件,這個文件默認不存在的,須要本身手動添加,路徑爲 /home/git/.ssh/authorized_keys (這個文件的權限644)shell
這個文件的路徑是在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