開発やサーバー管理のためSSH接続を日常的に使っている方は多いと思います。
SSH接続は安全を確保するための定番ですが、パスフレーズ付きの秘密鍵を利用していると、接続のたびに何度もパスフレーズの入力を求められうんざりしてしまいます。
幸い、WindowsのOpenSSHにはパスフレーズの入力を省略することができる便利な機能が搭載されています。macOSのキーチェーンを使った場合と同様、PCを再起動してもパスフレーズを記憶してくれているため、パスフレーズの入力は最初の1回だけですますことができます。
この記事では、Windows 11に標準で搭載されているこの機能の利用方法を説明します。
なぜパスフレーズ入力を省略できるのか?
WindowsのOpenSSHクライアントは「OpenSSH Authentication Agent」と呼ばれるサービスと連動し、パスフレーズを解除した秘密鍵を安全に保持します。
パスフレーズの入力はssh-add
コマンドで鍵を登録する際に一度だけ必要となります。以降のssh接続時には、エージェントが自動で秘密鍵を提供してくれるため、ユーザーはパスフレーズの入力を求められなくなるのです。
OpenSSH Authentication Agentを起動する
記事執筆時、Windows 11ではsshクライアントは標準で利用できますが、「OpenSSH Authentication Agent」は有効化されていません。サービス設定で有効化する必要があります。
スタートメニューなどから「サービス」を検索して開き、「OpenSSH Authentication Agent」のプロパティを表示します。スタートアップの種類を「自動(遅延開始)」か「自動」に変更し「開始」ボタンをクリックします。
秘密鍵を登録する
サービスが起動している状態になったら、秘密鍵をエージェントに登録できます。コマンドプロンプトやPowerShellを開き、ssh-add 秘密鍵のパス
を実行します。
# 秘密鍵をエージェントに登録する ssh-add C:\Users\ユーザー名\.ssh\id_rsa
コマンドを実行するとパスフレーズの入力を求められます。登録に成功した場合、ssh-add -l
で鍵の一覧が表示されます。
SSH接続を試してみる
鍵の登録が完了したら後は通常通りssh接続するだけです。
ssh user@remote-server.com
パスフレーズの入力を求められることなく、リモートサーバーにログインできるはずです!
ただし、~/.ssh/config
ファイルでIdentitiesOnly yes
を指定するとパスワードの入力が常に必要でした。macOSとは異なっており注意が必要です。
まとめ
Windows 11に標準搭載されたOpenSSHを有効活用することで、セキュリティを妥協することなく、快適なSSHライフを手に入れることができます。WindowsにOpenSSHが搭載されたのは比較的遅く(Windows 10の時代)、その間さまざまなサードパーティツールが使われてきました。Windowsのssh関連情報は錯綜していますが、まずは標準機能を試してみるのがおすすめです。