git pull を sudo として許可する方法

git pull を sudo として許可する方法

git pull私は自分のマシンで毎日(sudoなしで)使用しており、sshフォルダにキーが1つあります( 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 経由でリポジトリをクローンしたようですが、 (実際には SSH だと思いますが) は、ユーザーの SSH 秘密キーではなく、ユーザーgitの SSH 秘密キーを探しています。root/root/.ssh//home/your-user/.ssh/

次のことを試すことができます:

  • スクリプトを次のように実行しますsudo -E: -Esudo で実行するときに定義されるユーザー環境変数が保持されます (いくつかの SSH 変数は必要になると思いますSSH_AUTH_SOCKSSH_AGENT_LAUNCHER、詳細についてはよくわかりません)。

  • スクリプト内で、git コマンドを「root として」ではなく「ユーザーとして」実行します。これを実現するには、sudo再度 :)を使用します。

    sudo -E -u $(logname) git pull
    

2 回使用していることに注意してくださいsudo -E。1 回はスクリプトを呼び出すため、もう 1 回はgitスクリプト内で呼び出すためです。

それはうまくいくはずです:)

PS sudo にエクスポートされる環境変数をより細かく制御する必要がある場合は、--preserve-env=listの代わりにオプションを使用します-E

答え2

/root/.ssh/git を sudo で使用すると、 ではなく でキーが検索されます/home/yourusername/.ssh/。 前者にコピーするだけで動作するはずです。

関連情報