久々にGithubのリポジトリにローカルのリポジトリをプッシュしようと思ったら、プッシュするたびにパスフレーズを聞かれるようになってしまいました。なんでかなぁと思って調べてみたら、どうやらmacOSのアップデートでキーチェーンからSSHのパスフレーズを読み込まなくなってしまったようです。
Githubへのpushに限らず、SSHでリモートサーバに接続する際に毎回パスフレーズを聞かれるようになった場合にも当てはまるはずです。
以下、解決方法を見つけたので忘れないようにメモっておきます。
キーチェーンからパスフレーズを読み込む設定
~/.ssh/config
ファイルに、以下を記述することで解決しました。
Host *
UseKeychain yes
僕の場合、config
ファイルが存在しなかったので、新しく作成しました。
※その後、またパスフレーズを聞かれるようになったことがあったので、その時の方法を以下に追加しておきました。
configファイルの追加で解決しない場合
上述したconfigでの設定が問題なさそうなのに、まだパスフレーズを聞かれる場合は、以下のコマンドでキーチェーンにパスフレーズを保存することで解決するようです。
ssh-add -K ~/.ssh/id_rsa
それでも解決しない場合は、GitHubヘルプ で説明されている手順を見直してみると良いかもしれません。
この問題が発生した時の状況
git remote -v
コマンドでリモートへのアクセス設定を確認すると、SSHで接続するように設定されているのが確認できます。
% git remote -v
origin git@github.com:rriver/library.git (fetch)
origin git@github.com:rriver/library.git (push)
この状態でgit push
のコマンドを打つと「パスフレーズを入れろ」と怒られます。2回目から聞かれなくなるのかと思ったら、毎回聞かれます。
% git push -u origin master
Enter passphrase for key '/Users/username/.ssh/id_rsa':
毎回パスフレーズを入れなきゃいけないのは面倒ですよね。ということで、さっきのconfigファイルの設定をしたらパスフレーズを聞かれなくなりました。ちなみに、Macを再起動しても大丈夫でした。
環境
念のためハードとソフトのざっくりとした環境を書いておきます。
- MacBook Pro (Mid 2014)
- macOS Sierra (バージョン 10.12.4)
- iTerm2 Build 3.0.15
- brew版のopensshではない
その後、configの設定は問題なかったのですがパスフレーズを聞かれるようになったことがあったので、その時のハードとソフトの環境もメモっておきます。
- MacBook Pro (2018)
- macOS Catalina 10.15.5
- iTerm2 Build 3.3.11beta1
- brew版のopensshではない
参考サイト
以下のサイトを参考にさせていただきました。
- macOS keeps asking my ssh passphrase since I updated to Sierra – Super User
- 新しい SSH キーを生成して ssh-agent に追加する
以上、同じ問題で困っている方の参考になれば幸いです。Happy githubing!
更新情報
- 「configファイルの追加で解決しない場合」セクションとGitHubのヘルプページへのリンクを追加しました(2020/06/04)
2017年4月13日に公開され、2020年6月4日に更新された記事です。
About the author
「明日のウェブ制作に役立つアイディア」をテーマにこのブログを書いています。アメリカの大学を卒業後、ボストン近郊のウェブ制作会社に勤務。帰国後、東京のウェブ制作会社に勤務した後、ウェブ担当者として日英バイリンガルのサイト運営に携わる。詳しくはこちら。
ウェブ制作・ディレクション、ビデオを含むコンテンツ制作のお手伝い、執筆・翻訳のご依頼など、お気軽にご相談ください。いずれも日本語と英語で対応可能です。まずは、Mastodon @rriver@vivaldi.net 、Twitter @rriver 、またはFacebook までご連絡ください。