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のときはこの方法をとった覚えがあります。


コメント