搭建自己的Git伺服器
搭建Git伺服器
讓我們先看下伺服器端SSH訪問的配置。在這個例子中,我們使用authorized_keys的方法認證用戶。我們假設你的伺服器是一個標準linux發行版,比如ubuntu。
首先,你需要創建一個git用戶,並在用戶目錄下創建一個.ssh文件夾
接下來,你需要將開發者的SSH公鑰添加到authorized_keys文件。我們這裡假設你能獲取到可信的公鑰,並將它們保存到了臨時文件中。公鑰的內容應該大致像這個樣子:
你需要將這個公鑰放置在git用戶.ssh文件夾中的authorized_keys文件的最後。
現在,你可以初始化一個空的倉庫,運行 git init 命令,並附帶--bare選項,這樣就是單純地初始化一個倉庫,而不會變更當前目錄。
然後,John、Josie或者Jessica就可以將項目的初版推送到這個倉庫中了,步驟就是添加一個remote地址,並推送對應的分支。注意,如果你想增加一個項目,那麼你就需要登陸到機器上來,再初始化一個新的倉庫。我們將你使用到的伺服器成為gitserver。如果你是公司內部使用,那麼設置一個DNS,讓域名gitserver指向這台機器。然後你就可以直接使用下列命令了。
(假設myproject是一個已經存在並且有些內容的文件夾)
這時,其他人就可以把這個倉庫clone下來,做些修改再push回去了。
用上面的方法,你很快得到了一個可用的Git伺服器,現在你可以跟很多人一起協作工作了。
注意,現在每個人都能夠登陸到伺服器上,並以git用戶身份操作。如果你想限制這種可能,可以修改一下passwd文件。
你可以限制用戶只能通過git-shell來進行操作。如果你這樣設置git用戶的登陸設置,那麼git用戶就無法登陸到機器上了。為了做到這種效果,使用git-shell替換bash和其他登陸shell。所以如果你的/etc/shells中沒有git-shell,那麼你需要先添加上去:
現在你可以為一個用戶修改他的shell了
現在,git用戶只能使用ssh推拉代碼,而不能登陸到機器上了。
如果你嘗試登陸,會得到這樣的提示信息
現在git的網路命令還可以正常使用,但是登陸到遠程伺服器上已經不行了。就像輸出中顯示的,你也可以在git用戶目錄下創建一個文件夾來定製git-shell的一些行為。例如,你可以限制git伺服器接受的命令範圍,或者更改嘗試登陸的錯誤提示。對於定製git-shell的行為,你可以通過命令git help shell 查看相關的幫助信息。
英文原文:https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server
譯者:詩書塞外
※用AlphaGo背後的人工智慧做金融投資
※Python控制鍵盤滑鼠:pynput
TAG:Python程序員 |