我有我自己的私人Linux服務器。我使用它來託管我所有的公司git倉庫。我正在使用python
來閱讀.git
目錄。我還有一個數據庫,其中包含一些信息,例如允許登錄到系統的用戶。爲服務器上的git存儲庫添加一層認證
現在的問題,我有一個名爲git的Linux用戶。用戶擁有所有的存儲庫,當我嘗試從外部機器連接時,我必須在拉和推之前將SSH密鑰上傳到服務器。
我現在要做的是創建一個像github這樣的認證層。通過輸入系統的用戶名和密碼,用戶可以克隆或推送到私人存儲庫。由於用戶名和密碼在數據庫中,我需要一個python腳本或任何其他腳本來獲取用戶名和密碼。
現在的問題,當用戶試圖這樣做的時候.. git push origin master
第一次。並沒有SSH密鑰。如果用戶使用我數據庫中的數據進行身份驗證,並且有權訪問此存儲庫,那麼我需要他/她能夠推送回購或克隆它,我需要說些什麼Please enter your username and password
。
請不要提供現成的軟件來託管git存儲庫。這不適合我。
首先,謝謝。但是Github,Heroku和其他許多允許用戶從服務器上推/拉的平臺並不依賴於SSH密鑰。如果你在github上有一個私人回購站,你將能夠在Github中只使用你的用戶名和密碼克隆它,這些用戶名和密碼已經存儲在他們的數據庫中。這真的是我的問題。我的PostgreSQL數據庫中有用戶,我需要爲他們提供將服務器用作Git服務器的權限。在訪問.git repo之前,您需要有一個腳本,它將會轉到數據庫或文件來檢查權限。你有什麼建議? – Othman
@奧斯曼我仍然建議gitolite,但是有一個Apache前端。 http://stackoverflow.com/a/21303301/6309。除了代替Apache對LDAP進行身份驗證之外,它可以針對PostgreSQL進行身份驗證(http://www.graphica.com.au/postgres-and-apache.html或http://www.giuseppetanzilli.it/mod_auth_pgsql2/) – VonC
因此,我使用apache從我的數據庫驗證用戶(OK)。如果有人想使用SSH密鑰,我需要修改'gitolite-admin'回購和該文件的密鑰。如果用戶擁有SSH密鑰,apache會忽略認證,因爲即使我在服務器中有SSH密鑰,要求輸入用戶名和密碼也很愚蠢嗎?如果是的,謝謝。 – Othman