Linux服務器配置git服務


前言

Git是一個非常著名的分布式版本控制系統,而廣大開發者更是習慣在最大的遠程倉庫GitHub上提交自己的代碼。但是有時候,一些小項目不值得放到GitHub上去,或是由於隱私問題不好在GitHub的公共倉庫上提交,自己也不願意出錢購買私有倉庫。在這種情況下,如何在一台自己的Linux服務器上搭建Git服務,並且和客戶端(特別是Windows客戶端)完美協同工作呢?

系統配置

服務器:Ubuntu 16.04
客戶端:Windows主機(Windows 7以上)

安裝Git和SSH

在服務器上運行apt安裝git和openssh-server即可,非常方便。

$ sudo apt install git openssh-server

客戶端由於是windows,沒有原生ssh,因此需要下載git for windows和putty。安裝過程略。

生成密鑰對

安裝完成之后,在客戶端的命令行中運行如下命令生成SSH密鑰對:

C:\> ssh-keygen -t rsa

按照提示操作即可,為了簡便起見不用設置ssh密鑰的密碼。
執行上述命令之后可以在C:\Users\用戶名.ssh目錄下找到id_rsa.pri和id_rsa.pub兩個文件。分別是你的私鑰和公鑰。

在服務器上同樣運行這個命令,則可以在/home/用戶名/.ssh中也找到這兩個文件,但是我們並不關心服務器上這兩個文件的內容,除非服務器需要ssh連接客戶端。

將客戶端公鑰復制到服務器

在服務器上新建authorized_keys文件。

$ cd .ssh
$ touch authorized_keys

然后將客戶端公鑰文件id_rsa.pub文件的內容復制到authorized_keys文件中去。如果有多個客戶端,則需要將每個客戶端的公鑰都復制到authorized_keys中,一行一個。

對於windows客戶端,可以通過putty自帶的pscp命令將id_rsa.pub文件復制到服務器,再ssh進入服務器操作(當然如果有服務器的直接操作權限那就更好啦)

新建git倉庫

在服務器上新建你要作為git倉庫的文件夾,例如:

$ mkdir myrepo

這里的myrepo應當根據實際要求替換成你自己的倉庫名。
然后執行下列命令:

$ cd myrepo
$ git --bare init myrepo.git

這樣就建立好了自己的倉庫。

修改SSHD配置

網上很多教程到上面一步就結束了,但是它們都漏了很重要的一步。就是修改sshd的配置。

$ sudo vim /etc/ssh/sshd_config

確保以下幾處配置:

StrictModes no  #由yes改為no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys #這里要取消注釋

這樣做的目的是使以后你推送到遠程倉庫時不需要再輸入密碼。

客戶端配置

克隆遠程倉庫

使用git clone命令克隆遠程倉庫:

> git clone username@host:/myrepo/myrepo.git

即可完成遠程倉庫的克隆。這里的username應替換成你遠程倉庫主機的用戶名,host一般是遠程倉庫的IP地址,或者你可以將遠程計算機名添加入客戶端的host文件。

工作並推送到遠程倉庫

完成工作並提交更改以后,可以使用git push命令將你的修改推送到遠程倉庫。

> git push origin master

這里的master也可以是其他分支,涉及到git的詳細操作教程,本文這里不展開。

修改遠程倉庫地址的方法

有的時候遠程倉庫地址並不是一個靜態IP地址,可能會隨着DHCP協議重新分配,那么當遠程倉庫的IP地址發生了變化后怎么在客戶端修改遠程倉庫的地址呢?只要進入你克隆的目錄下,找到.git/config文件,將其中的遠程倉庫地址修改為新的地址即可。

服務器上倉庫的重建

非常簡單,只要你在別的地方有克隆過版本庫,在config文件中修改新的倉庫地址,然后push所有的分支即可完成倉庫重建。

總結

本文描述了在linux下配置git服務器和ssh服務,以及如何使用Windows系統連接到自建的git服務器並完成克隆、推送等一系列操作的方法。修正了一些網上教程的缺漏。在筆者的環境下(一台服務器、一台客戶端)配置成功。希望本文對各位想在自己的服務器上搭建git服務進行版本控制的朋友有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM