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を介してリポジトリを複製したようです(実際にはSSHのようです)、ユーザーの1人ではなく、ユーザーgit
のSSH秘密鍵を探しています。root
/root/.ssh/
/home/your-user/.ssh/
次のことを試すことができます。
以下を使用してスクリプトを実行します
sudo -E
。-E
sudoで実行するときに定義されたユーザー環境変数を保持します(一部のSSH変数が必要だと思いますSSH_AUTH_SOCK
が、SSH_AGENT_LAUNCHER
詳細を理解していません)。スクリプトで「root」ではなく「user」としてgitコマンドを実行します。これを達成するために
sudo
再び頼ることができます。 :)sudo -E -u $(logname) git pull
2回使用してくださいsudo -E
。一度はスクリプトを呼び出し、一度はgit
スクリプト内で使用します。
動作します:)
PSどの環境変数をsudoにエクスポートするかをより細かく制御するには、--preserve-env=list
optionの代わりに使用してください-E
。
答え2
/root/.ssh/
sudoでgitを使用すると、代わりにキーを見つけます/home/yourusername/.ssh/
。