一個簡易git伺服器的搭建
檢視本機ssh公鑰,生成公鑰
檢視ssh公鑰方法:
1. 開啟git bash視窗
2. 進入.ssh目錄: cd ~/.ssh
3. 找到id_rsa.pub檔案: ls
4. 檢視公鑰:cat id_rsa.pub
或者 vim id_rsa.pub
何為公鑰:
1. 很多伺服器都是需要認證的,ssh認證是其中的一種。在客戶端生成公鑰,把生成的公鑰新增到伺服器,你以後連線伺服器就不用每次都輸入使用者名稱和密碼了。 2. 很多git伺服器都是用ssh認證方式,你需要把你生成的公鑰傳送給程式碼倉庫管理員,讓他給你新增到伺服器上,你就可以通過ssh自由地拉取和提交程式碼了。
生成公鑰:
1.如果通過上面的方式找不到公鑰,你就需要先生成公鑰了:ssh-keygen
2.接著會確認存放公鑰的地址,預設就是上面說的路徑,直接enter鍵確認
3.接著會要求輸入密碼和確認密碼,如果不想設定密碼直接不輸入內容 按enter鍵
配置伺服器
我們來看看如何配置伺服器端的 SSH 訪問。 本例中,我們將使用 authorized_keys 方法來對使用者進行認證。 同時我們假設你使用的作業系統是標準的 Linux 發行版,比如 Ubuntu。 首先,建立一個作業系統使用者 git,併為其建立一個 .ssh 目錄。
$ sudo adduser git $ su git $ cd $ mkdir .ssh && chmod 700 .ssh $ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
接著,我們需要為系統使用者 git 的 authorized_keys 檔案新增一些開發者 SSH 公鑰。 假設我們已經獲得了若干受信任的公鑰,並將它們儲存在臨時檔案中。 與前文類似,這些公鑰看起來是這樣的:
$ cat /tmp/id_rsa.john.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCBr07n/ww+ouN4gSLKssMxXnBOvf9LGt4L ojG6rs6hPB09j9R/T18/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4owOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez Sdfd8AcCIicTDWbqLAcU5UpkaX8KyGlLwsNeeztobF8m72ALC/nLF6JLtPofwFfggc+myiv O7TCUSBdLQsdMVOFq1I2ufWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq dAv8JggJICUvax2T9va5 gsg-keypair
將這些公鑰加入系統使用者 git 的 .ssh 目錄下 authorized_keys 檔案的末尾:
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
其中john、josie、jessica是為了區分不同使用者公鑰
現在我們來為開發者新建一個空倉庫。可以藉助帶 --bare 選項的 git init 命令來做到這一點,該命令在初始化倉庫時不會建立工作目錄:
$ cd /home/git
$ mkdir project.git
$ cd project.git
$ git init --bare
Initialized empty Git repository in /opt/git/project.git/
注意/opt/git/project.git這個路徑要根據自己的路徑來處理,使用pwd命令來檢視該路徑,以便下面使用
接著,John、Josie 或者 Jessica 中的任意一人可以將他們專案的最初版本推送到這個倉庫中,他只需將此倉庫設定為專案的遠端倉庫並向其推送分支。 請注意,每新增一個新專案,都需要有人登入伺服器取得 shell,並建立一個裸倉庫。 我們假定這個設定了 git 使用者和 Git 倉庫的伺服器使用 gitserver 作為主機名。 同時,假設該伺服器執行在內網,並且你已在 DNS 配置中將 gitserver 指向此伺服器。那麼我們可以執行如下命令(假定 myproject 是已有專案且其中已包含檔案):
# on John's computer
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin [email protected]:/opt/git/project.git
$ git push origin master
此時,其他開發者可以克隆此倉庫,並推回各自的改動,步驟很簡單:
$ git clone [email protected]:/home/git/project.git
$ cd project
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master
注:[email protected]:/home/git/project.git中gitserver可替換成伺服器IP地址
通過這種方法,你可以快速搭建一個具有讀寫許可權、面向多個開發者的 Git 伺服器。