695

githubチュートリアルの指示に従ってキーを作成し、それらをgithubに登録して、ssh-agentを明示的に使用してみましたが、プルまたはプッシュを実行しようとするたびに、gitはパスフレーズを要求し続けます。

原因は何でしょうか?

4

19 に答える 19

1299

SSHエージェントを開始したら:

eval $(ssh-agent)

次のいずれかを実行します。

  1. 秘密鍵を追加するには:

     ssh-add
    

    これにより、パスフレーズが1回だけ要求されます。その後、公開鍵をGithubにアップロードした場合は、プッシュが許可されます。

  2. キーをmacOSに永続的に追加して保存するには:

     ssh-add -K  
    

    これにより、ユーザーのキーチェーンに保存して閉じてから再度開いた後も保持されます。

  3. Ubuntu(または同等のもの)にキーを永続的に追加して保存するには:

      ssh-add ~/.ssh/id_rsa
    
于 2012-04-05T16:47:05.897 に答える
296

これは、OS X El Capitan(10.11)からmacOS Sierra(10.12)にアップグレードしてから、再起動後に発生しています。ソリューションは一時的に機能しましたが、ssh-add別の再起動後も持続しませんでした。

永続的な解決策は、オプションを編集(または作成)~/.ssh/configして有効にすることでした。UseKeychain

Host *
    UseKeychain yes

関連:MacOSは、Sierraにアップデートしてから、sshパスフレーズを要求し続けます

于 2017-01-10T18:51:35.800 に答える
71

試しssh-addてもパスフレーズの入力を求められる場合は、を使用してみてくださいssh-add -K。これにより、パスフレーズがキーチェーンに追加されます。

更新:macOS Sierraを使用している場合は、上記が機能しなくなる可能性があるため、別の手順を実行する必要があります。以下をあなたのに追加してください~/.ssh/config

Host *
  UseKeychain yes
于 2016-12-19T10:20:38.170 に答える
64

私は次のことを試みます:

  1. GitBashを起動します
  2. ~/.bashrcファイルを編集する
  3. 次の行をファイルに追加します

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
    echo succeeded
    chmod 600 ${SSH_ENV}
    . ${SSH_ENV} > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi
  1. ファイルを保存して閉じます
  2. GitBashを閉じる
  3. GitBashを再度開きます
  4. パスフレーズを入力してください
于 2013-10-01T07:03:38.653 に答える
44

Windowsで私のために働いたのは(私はレポ1からコードのクローンを作成しました):

eval $(ssh-agent)
ssh-add 
git pull 

その時、最後にもう一度パスフレーズを尋ねられました

クレジット:ソリューションは https://unix.stackexchange.com/questions/12195/how-to-avoid-being-asked-passphrase-each-time-i-push-to-bitbucketから取得されました

于 2016-04-20T19:38:46.063 に答える
34

これを〜/ .ssh /configに追加してみてください:

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

...秘密鍵の名前がid_rsaであると仮定します

于 2017-03-09T20:40:15.697 に答える
11

上記の解決策がうまくいかない場合は、実際に公開鍵も持っていることを確認してください(通常はid_rsa.pub)。そうしないのは珍しいことですが、それが私の原因でした。

秘密鍵から公開鍵を作成するには:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
于 2017-04-27T09:51:33.977 に答える
9

次を実行します。

eval $(ssh-agent) && ssh-add ~/.ssh/id_rsa &>/dev/null

パスフレーズを入力し、gitを確認します。Gitは、このコマンドの後にパスフレーズを要求するべきではありません。

元のソース:https ://gist.github.com/egoens/c3aa494fc246bb4828e517407d56718d

于 2021-06-12T19:38:33.340 に答える
8

同様の問題がありましたが、他の回答では問題は解決しませんでした。他の誰かが私のような厄介な設定をしている場合に備えて、先に進んでこれを投稿すると思いました。

私は複数のキーを持っていて、Gitは最初に間違ったキーを使用していたことがわかりました。パスフレーズの入力を求められ、それを入力すると、Gitは機能する別のキーを使用します(パスフレーズを入力する必要はありませんでした)。

パスフレーズの入力を求めるために使用していたキーを削除したところ、機能するようになりました。

于 2013-03-05T19:40:34.790 に答える
7

GitBashを使用しておらず、Windowsを使用している場合は、このコマンドを使用してssh-agentを起動する必要があります

start-ssh-agent.cmd

sshエージェントが設定されていない場合は、PowerShellを管理者として開き、手動モードに設定できます

Get-Service -Name ssh-agent | Set-Service -StartupType Manual
于 2020-09-01T02:25:35.420 に答える
6

SSH-Agent自体に問題があるようです。トラブルシューティングを試みます。

1)SSHにキーを追加するためにssh-addを実行しましたか?

2)使用の合間にターミナルウィンドウを閉じていますか?ウィンドウを閉じた場合、再度開いたときにパスワードを再入力する必要があるためです。

于 2012-04-05T16:40:33.477 に答える
5

WindowsまたはLinuxユーザーの場合、考えられる解決策はGitHub Docsに記載されてます。これは、便宜上、以下に報告します。

ssh-agentbashまたはGitシェルを開くと自動的に実行できます。次の行をコピーして、~/.profileまたは~/.bashrcファイルに貼り付けます。

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add
fi

unset env

秘密鍵がデフォルトの場所の1つ(など~/.ssh/id_rsa)に保存されていない場合は、SSH認証エージェントに秘密鍵の場所を指示する必要があります。キーをssh-agentに追加するには、と入力しssh-add ~/path/to/my_keyます。

これで、 Git Bashを最初に実行すると、パスフレーズの入力を求められます。プロセスは、ssh-agentログアウトするか、コンピューターをシャットダウンするか、プロセスを強制終了するまで実行され続けます。

于 2020-11-12T18:22:35.507 に答える
3

私はさまざまな解決策を試しましたが、何も役に立ちません。しかし、Bitbucket.comの継ぎ目からのこの手順(私のGitBash SSH環境は常に私のパスフレーズを要求します。何ができますか?)はうまく機能します:

アイデアは次のとおりです。

  1. ~/.bashrcファイルを作成します

  2. フォロースクリプトを追加します。

     SSH_ENV=$HOME/.ssh/environment
    
     # start the ssh-agent
     function start_agent {
         echo "Initializing new SSH agent..."
         # spawn ssh-agent
         /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
         echo succeeded
         chmod 600 "${SSH_ENV}"
         . "${SSH_ENV}" > /dev/null
         /usr/bin/ssh-add
     }
    
     if [ -f "${SSH_ENV}" ]; then
         . "${SSH_ENV}" > /dev/null
         ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
             start_agent;
         }
     else
         start_agent;
     fi
    
  3. Bashを再実行します

于 2017-08-15T12:25:17.017 に答える
2

上記に記載されていない別の可能な解決策は、次のコマンドでリモコンを確認することです。

git remote -v

リモートがgitで開始せず、httpsで開始する場合は、以下の例に従ってgitに変更することをお勧めします。

git remote -v // origin is https://github.com/user/myrepo.git
git remote set-url origin git@github.com:user/myrepo.git
git remote -v // check if remote is changed
于 2019-10-26T17:57:25.090 に答える
2

Win10を使用している場合:

私も同じ問題を抱えていました。(以前は、別の問題のため、ここからスクリプトを使用してssh-agentを個別に更新する必要がありました)

Gitは私のssh構成にアクセスしましたが(ssh構成に意味のない行がある場合、git pullは例外をスローしました)、ssh-agentを介して追加し、構成で参照した秘密鍵を気にしないようでした。

問題を修正したのは、PowerShellで次のコマンドを実行することでした。

git config core.sshCommand (get-command ssh).Source.Replace('\','/')

(詳細はこのリンクにあります)

于 2021-04-14T13:10:57.990 に答える
1

Macでは、sshキーに毎回パスフレーズが必要で、それをスキップしたい場合は、以下を試してみてください。私にとっては問題なく動作します。

  1. eval "$(ssh-agent -s)"
  2. ssh-add -K .ssh / id_rsa
  3. このデフォルトのssh構成を追加してください

ホスト*
AddKeysToAgentはい
UseKeychainはい
IdentityFile〜/ .ssh / id_rsa

于 2020-10-22T14:27:58.247 に答える
1

HTTPSの代わりにSSHを使用してオリジンリモートのURLを更新します。

git remote set-url origin "SSH URL COPIED FROM GIT REPO."

これは私と一緒に働くものです。

于 2021-04-09T13:57:24.820 に答える
0

あなたがたまたま魚を使っているのなら、その要点があります:

# config.fish
if not pgrep -f ssh-agent > /dev/null
  eval (ssh-agent -c)
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
  set -Ux SSH_AGENT_PID $SSH_AGENT_PID
  set -Ux SSH_AUTH_SOCK $SSH_AUTH_SOCK
end
于 2021-04-30T15:02:57.507 に答える
0

リモートをsshにリセットする

git remote set-url origin git@github.com:Jmzgit/Moving.git

サーバーは主要な更新を再度取得する必要があるようです

于 2022-02-05T20:23:36.237 に答える