一、安裝Githtml
見 Jenkins持續集成環境部署 第四節git
二、建立Git用戶和用戶組shell
1 groupadd git 2 useradd git -g git
三、建立證書
切換到git用戶建立證書windows
1 su git 2 cd /home/git 3 mkdir .ssh 4 chmod 700 .ssh 5 touch .ssh/authorized_keys 6 chmod 600 .ssh/authorized_keys
注意:.ssh的權限必須是700,authorized_keys的權限必須是600安全
生成公鑰和私鑰文件bash
1 $ cd .ssh 2 $ ssh-keygen -t rsa
首先會讓你輸入要保存公鑰的位置,直接回車便可,接着會提示讓你重複一個密碼兩次,若是不想再使用公鑰的時候輸入密碼,直接回車便可。完成後會在home目錄下的.ssh目錄中生成兩個文件id_rsa(私有密鑰)和id_rsa.pub(公鑰)。服務器
四、初始化Git倉庫ssh
首先,咱們選定一個目錄做爲Git倉庫,假定是/home/gitdeport/runoob.git分佈式
1 $ cd /home 2 $ mkdir gitdeport 3 $ chown git:git gitdeport 4 $ cd gitdeport 5 $ git init --bare runoob.git 6 Initialized empty Git repository in /home/gitdeport/runoob.git/
以上命令Git建立一個空倉庫,服務器上的Git倉庫一般都以.git結尾。而後,把倉庫所屬用戶改成git:post
1 $ chown -R git:git runoob.git
五、在客戶端安裝git
先安裝git,再安裝TortoiseGit,安裝好後打開Git Bash:
六、設置用戶名、郵箱
Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識。每個 Git 的提交都會使用這些信息,而且它會寫入到你的每一次提交中,不可更改。若是使用了 --global 選項,那麼該命令只須要運行一次,由於以後不管你在該系統上作任何事情, Git 都會使用那些信息。 當你想針對特定項目使用不一樣的用戶名稱與郵件地址時,能夠在那個項目目錄下運行沒有 --global 選項的命令來配置。
若是想要檢查你的配置,可使用 git config --list 命令來列出全部 Git 當時能找到的配置,以下圖:
七、將Windows客戶端和Linux服務端關聯起來
想要將客戶端和服務端鏈接的話要建立證書登陸
打開windows的git bash,輸入ssh-keygen -t rsa -C 「郵箱」,生成ssh私鑰和公鑰,以下圖:
此時,C:\Users\用戶名.ssh 下會多出兩個文件 id_rsa 和 id_rsa.pub。id_rsa 是私鑰,id_rsa.pub是公鑰。
收集全部須要登陸的用戶的公鑰,公鑰位於id_rsa.pub文件中,把咱們的公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個。
服務端Git打開RSA認證
進入 /etc/ssh 目錄,編輯 sshd_config,打開如下三個配置的註釋:
保存後重啓sshd服務:
將客戶端公鑰加到服務器
將客戶端公鑰id_rsa.pub文件的內容寫到服務器端 /home/git/.ssh/authorized_keys 文件裏
注:以上密鑰只適用於使用Git Bash進行命令管理git的,即clone、push、pull等相關操做在Git Bash纔不用輸入密碼,而若是使用TortoiseGit 可視化界面,仍然要輸入密碼。
八、在客戶端clone遠程倉庫
將服務器上的/home/gitdeport/runoob.git庫克隆到本地 git clone 用戶名@服務器地址:倉庫路徑,以下圖:
形成上面報錯的緣由是Linux服務器上git的安裝路徑是/usr/local/git,不是默認路徑,根據提示,在git服務器192.168.182.130上, 創建連接文件:
1 ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
再次執行clone命令成功,以下圖:
這個過程有一點要千萬注意:.ssh的權限必須是700,authorized_keys的權限必須是600
九、禁用git用戶的shell登陸
出於安全考慮,建立的git用戶不容許登陸shell,能夠經過編輯/etc/passed文件完成,找到相似下面這一行:
1 git:x:501:502::/home/git:/bin/bash
改成:
1 git:x:501:502::/home/git:/usr/bin/git-shell
這樣,git用戶能夠正常經過ssh使用git,但沒法登陸shell,由於咱們爲git用戶指定的git-shell每次一登陸就自動退出。
TortoiseGit 無需輸入密碼方法
一、打開puttygen
二、生成公鑰和私鑰
點擊save private key保存putty的私鑰,putty的密鑰的後綴名是ppk。 把公鑰添加到.ssh/authorized_keys
注意:
公鑰在authorized_keys的文件形式是一行一個公鑰,不然該公鑰不起做用。
三、在tortoisegit上使用密鑰
這樣就OK了!!
使用TortoiseGit將文件提交至git服務器
提交失敗,報錯了,緣由是:Linux服務器上git的安裝路徑是/usr/local/git,不是默認路徑。
根據提示,在git服務器192.168.182.130上, 創建連接文件:
1 ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
再次提交成功,以下圖: