私はLinuxを使用していて、githubのチュートリアルの指示に従ってキーを作成し、それらをgithubに登録して、ssh-agentを明示的に使用してみました。
原因は何ですか?
SSHエージェントを起動したら:
eval $(ssh-agent)
秘密鍵を追加する必要があります。
ssh-add
これは一度だけあなたのパスフレーズをあなたに尋ねるでしょう、そしてあなたがGithubに公開鍵をアップロードしたならば、あなたはプッシュを許可されるべきです。
キーを永続的に保存するには
ssh-add -K
ユーザーのキーチェーンに保存して閉じてから再び開いても、これは保持されます。
OS X El Capitan(10.11)からmacOS Sierra(10.12)にアップグレードしてから再起動した後、私にはこれが起こっています。 ssh-add
ソリューションは一時的に機能しましたが、別の再起動後も持続しません。
恒久的な解決策は~/.ssh/config
を編集(または作成)してUseKeychain
オプションを有効にすることでした。
Host *
UseKeychain yes
ssh-add
を試してもパスフレーズを入力するように求められた場合は、ssh-add -K
を使ってみてください。これにより、パスフレーズがキーチェーンに追加されます。
更新:あなたがmacOS Sierraを使っているのなら、上記の方法はもううまくいかないかもしれないので、おそらくあなたは別のステップを実行する必要があるだろう。以下を~/.ssh/config
に追加してください:
Host *
UseKeychain yes
私は以下を試してみます:
~/.bashrc
ファイルを編集します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
これを 〜/ .ssh/config に追加してみてください。
Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
秘密鍵の名前が id_rsa であるとします。
私が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 から取られました
私は同様の問題を抱えていたが、他の答えは私の問題を解決しなかった。他の誰かが私のようにおかしい設定をしている場合に備えて、私は先に進んでこれを投稿すると思いました。
私が複数のキーを持っていて、Gitが間違ったキーを最初に使用していたことがわかりました。パスフレーズの入力を求められたら、それを入力してから、Gitで別のキーを使用します(パスフレーズを入力する必要はありません)。
パスフレーズの入力を要求するために使用していたキーを削除したところ、機能します。
SSH-Agent自体に問題がある可能性があります。それをトラブルシューティングしようと思います。
1)SSHに鍵を追加するためにssh-addを実行しましたか?
2)使用の合間にターミナルウィンドウを閉じていますか。ウィンドウを閉じた場合は、もう一度開いたときにパスワードを再入力する必要があります。
上記の解決策がうまくいかない場合は、実際に公開鍵も持っていることを確認してください(通常はid_rsa.pub
)。そうではないのは珍しいことですが、それが私の原因でした。
あなたの秘密鍵からあなたの公開鍵を作成するには:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
私は別の解決策を試しますが、何も助けになりません。しかし、この手順( 私のGitBash SSH環境は常に私のパスフレーズを要求します。どうすればよいですか /)は、Bitbucket.comのシームからうまく機能します。
アイデアは:
あなたは~/.bashrc
ファイルを作成します
フォロースクリプトを追加します。
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
bashを再実行