web-dev-qa-db-ja.com

GitがSSHキーのパスフレーズを要求し続ける

私はLinuxを使用していて、githubのチュートリアルの指示に従ってキーを作成し、それらをgithubに登録して、ssh-agentを明示的に使用してみました。

原因は何ですか?

442
Rogach

SSHエージェントを起動したら:

eval $(ssh-agent)
  1. 秘密鍵を追加する必要があります。

    ssh-add
    

    これは一度だけあなたのパスフレーズをあなたに尋ねるでしょう、そしてあなたがGithubに公開鍵をアップロードしたならば、あなたはプッシュを許可されるべきです。

  2. キーを永続的に保存するには

    ssh-add -K  
    

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

878

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

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

Host *
    UseKeychain yes

関連: Sierraにアップデートしてから、macOSがsshパスフレーズを要求し続ける

191
Kyle Clegg

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

更新:あなたがmacOS Sierraを使っているのなら、上記の方法はもううまくいかないかもしれないので、おそらくあなたは別のステップを実行する必要があるだろう。以下を~/.ssh/configに追加してください:

Host *
  UseKeychain yes
57
Darryl Young

私は以下を試してみます:

  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. パスフレーズを入力してください
45
Roland

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

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

秘密鍵の名前が id_rsa であるとします。

18
IgorGanapolsky

私がWindows上で動いたのは(私がリポジトリの1stからコードを複製した):

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 から取られました

13
Arthur

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

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

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

6
11101101b

SSH-Agent自体に問題がある可能性があります。それをトラブルシューティングしようと思います。

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

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

5
Jeff Welling

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

あなたの秘密鍵からあなたの公開鍵を作成するには:

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
4
Stephen Harris

私は別の解決策を試しますが、何も助けになりません。しかし、この手順( 私のGitBash SSH環境は常に私のパスフレーズを要求します。どうすればよいですか /)は、Bitbucket.comのシームからうまく機能します。

アイデアは:

  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を再実行

1
Alx Lark