macOS
をHigh Sierra
にアップデートしたあと、git push
で毎回パスワードを聞かれる気がする。
こういった表示が毎回出ます。
Enter passphrase for key '/Users/<username>/.ssh/id_rsa':
High Sierra
にしてから目に見えないところで色々変化があって、対応が面倒です。
以前(El Capitan
)まで、git push
で、Bitbucket
にプッシュしても、
パスワードは聞かれなかったような覚えがあるんですが、対策をしたいと思いました。
調査
git push
でorigin
に指定しているBitbucket
にプッシュすると、毎回パスワードを聞かれる。git push heroku master
でHeroku
にプッシュするときは聞かれない。
この2つで差はないかgit remote -v
で調べると、プロトコルが違いました。
$ git remote -v
heroku https://git.heroku.com/<repository>.git (fetch)
heroku https://git.heroku.com/<repository>.git (push)
origin ssh://git@bitbucket.org/<username>/<repository>.git (fetch)
origin ssh://git@bitbucket.org/<username>/<repository>.git (push)
聞かれる時のメッセージ的にもこれだと思います。なのでorigin
に対応するURLをhttps
のものに変更すればいいのではと思いました。
https
だとcredential.helper
によるパスワードのキャッシュの恩恵を得られるようです。
Homebrew
でgit
を導入すると、自動でcredential.helper
にosxkeychain
が指定されているようです。
対策
origin
の変更方法を調べるため、git remote --help
で探すと、git remote set-url <name> <new_url>
がありました。
git remote set-url origin https://<username>@bitbucket.org/<username>/<repository>.git
を実行すると、origin
のfetch
とpush
の両方が書き換えられます。
プッシュしてみると、初回はosxkeychain
からパスワードを聞かれますが、(SSHのではない)
常に許可しておけば、以降は聞かれなくなりました。キャッシュの有効期限が切れるまでは聞かれないと思います。
SSHのまま対策するとき
ssh-agent
というものを使えばいいらしいです。詳しくは参考の2つ目を。El Capitan
のときはこの方法をとった覚えがあります。
コメント