如何允許 git pull 作為 sudo

如何允許 git pull 作為 sudo

git pull我每天都在我的機器上使用(沒有 sudo),我的 ssh 資料夾中有一把鑰匙( cat ~/.ssh/id_rsa.pub

問題是,我無法調用sudo git pull,因為我收到錯誤:

sudo git pull
[email protected]: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

可能是我的鑰匙有問題。

我需要在外部腳本中調用它(使用 sudo)。

我怎樣才能打電話sudo git pull?如何為 sudo 添加密鑰?

簡而言之:pull不起作用,sudo為什麼?

答案1

sudo當您在不指定特定使用者的情況下運行某些內容時,您將以root使用者身分執行它。

因為看起來您透過 SSH 克隆了您的儲存庫,git(實際上我猜是 SSH)正在尋找用戶的 SSH 私鑰,root而不是您的用戶之一:/root/.ssh//home/your-user/.ssh/.

您可以嘗試以下操作:

  • 使用以下命令運行腳本sudo -E-E保留在 sudo 上運行時定義的用戶環境變量(我認為SSH_AUTH_SOCK和/或SSH_AGENT_LAUNCHER將需要一些 SSH 變量,但我不太了解細節)。

  • 在腳本中,「以使用者身分」而不是「以 root 身分」執行 git 命令。為了實現這一點,您可以sudo再次依賴:)

    sudo -E -u $(logname) git pull
    

請注意,您使用了sudo -E兩次:一次呼叫腳本,另一次git在腳本內部呼叫。

那應該有效:)

PS 如果您需要更細緻地控制將哪些環境變數匯出到 sudo,請使用--preserve-env=listoption 而不是-E

答案2

當您將 git 與 sudo 一起使用時,它會在 中查找密鑰/root/.ssh/,而不是在/home/yourusername/.ssh/.您只需將其複製到前者中就可以了。

相關內容