Linux

SSH 不允許使用具有組可讀權限的密鑰

  • April 1, 2013

我有一個開發 git 伺服器,當live分支被推送到時,它會部署到實時伺服器。每個使用者都有自己的登錄名,因此進行post-receive實時部署的鉤子在他們自己的使用者下執行。

因為我不想在遠端實時伺服器上維護使用者公鑰作為授權密鑰,所以我製作了一組“屬於 git 系統的密鑰”以添加到遠端實時伺服器(在post-receive我正在使用的鉤子中)$GIT_SSH使用選項設置私鑰-i)。

我的問題是,由於所有使用者都可能想要部署到 live,git 系統的私鑰必須至少是組可讀的,而 SSH 真的不喜歡這樣。

這是錯誤的範例:

XXXX@XXXX /srv/git/identity % ssh -i id_rsa XXXXX@XXXXX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0640 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa

我環顧四周,希望能找到一些迫使 ssh 通過連接的方式,但我什麼也沒找到,但人們盲目地說你不應該允許訪問除單個使用者之外的任何東西。

這是一個很好的簡單和安全的方法。

為 ssh 傳輸創建一個新使用者,我稱之為 git-sync。在伺服器上為 git 儲存庫創建一個具有組成員身份的類似使用者。將 sync-user 的公鑰添加到該使用者的 authorized_keys2 文件中。我假設 git 使用者都是 gitgroup 的成員。確保 git-sync 使用者也是該組的成員。

現在編輯您的 /etc/sudoers 文件以包含如下行:

%gitgroup ALL=(git-sync) NOPASSWD: /usr/bin/git

這將允許 gitgroup 組的任何成員在沒有密碼的情況下將命令 /usr/bin/bit 作為 git-sync 執行。

現在在你的 post-receive 鉤子中加入這樣的東西:

sudo -u git-sync /usr/bin/git push origin

引用自:https://serverfault.com/questions/426246