頻繁に出るVSCodeのSSH Keyプロンプトが煩わしい
SSH Keyプロンプトが頻発して表示される際の対処法と原因を書いていこうと思います。
以下のような文言になっていると思います。
SSH Key: /Users/[user_name]/.ssh/id_rsa ('Enter'を押して確認するか 'Escape' を押して取り消します)
なぜ?
これが表示される理由は、VSCodeがSSHキー(id_rsa)を使用して認証を求めているためです。そもそもVSCodeがid_rsa
を使って認証を求めているのはVSCodeの拡張機能やGit、リモート接続設定によりSSH認証が必要な場面が発生しているので、このようなプロンプトが出てきます。
最も簡単な解決方法は、指示通りEnterを押して認証を許可することです。成功すれば、それ以降は表示されなくなりますが、頻発する場合は以下のような方法で対応できます。
SSH Agentにキーを追加する
プロンプトが頻繁に出る場合、一番サクッと簡単に解決したい場合はSSH Agentにキーを追加することでこれを解決できます。
SSH Agentを起動する
eval "$(ssh-agent -s)"
秘密鍵 (id_rsa)をSSH Agentに追加する
ssh-add ~/.ssh/id_rsa
再度VSCodeを開いて、メッセージが表示されないか確認してみてください!
恒久的な解決
これは一時的な解決方法です。OSをリセットすることで再度プロンプト要求されることがあります。
-
~/.ssh/config
で鍵を明示的に指定 - リモート開発 (Remote-SSH) を使っている場合、VSCodeのRemote SSH設定を見直す
等を実践してみてください。
(番外編1) sshの基本的な認証の流れ
そもそもなぜVSCodeがSSHキー(id_rsa)を使用して認証を要求している時にSSH Agentに秘密鍵を登録すると解決するの?ということを掘っていきましょう。まず最初にSSHの基本的な認証の流れを追ってその後にssh-agentの役割についても記載していこうと思います。
-
VSCodeやGitがSSHを使ってリモートに接続しようとする
例えば、git pushを実行すると、リモート(git@github.com)に接続する必要があります。 -
SSH クライアント (ssh や git) が鍵を探す
デフォルトで~/.ssh/id_rsa
などのSSH Keyを使用しようとします。~/.ssh/config
に設定があれば、それを優先してくれます。秘密鍵(id_rsa)がパスフレーズ付きなら、認証のたびにパスフレーズを求められます。 -
SSH Keyにパスフレーズが設定されている場合、毎回入力を求められる。
もしくはSSH Key: /Users/[user_name]/.ssh/id_rsa ('Enter' を押して確認...)
というプロンプトが表示される。
(番外編2) ssh-agentを使うとどうなるか?
ではssh-agentを使用するとどのようなことが起こり、認証のパスフレーズの毎回入力を抑制できるのか説明していきます。ssh-agentは、SSHの秘密鍵を一時的に記憶するプロセスで、以下のように動作します。
- ssh-agentを起動
eval "$(ssh-agent -s)"
これによりバックグラウンドでSSH認証を管理するプロセスを起動します。
- ssh-addを実行
ssh-add ~/.ssh/id_rsa
これによってSSH Key(id_rsa)をssh-agentに追加し、一時的に記憶させます。パスフレーズを要求された場合はここで一度入力すれば、その後は再入力不要になります。
- VSCodeやGitがSSH認証を要求した場合、ssh-agentが自動で鍵を提供
つまり、VSCodeがid_rsaを使おうとしたときに、ssh-agentが記憶している鍵を自動で返すため、プロンプトが表示されなくなるということです。
Discussion