🦥

WSLでSSHキーを何度も求められないように設定する方法

2025/01/16に公開

はじめに

Windows Subsystem for Linux 2 (WSL2)環境を利用していると、WindowsリソースなどにアクセスしようとするときなどにSSHキーを求められることがあると思います。
それを公開キーなどを保存して一度通すことはできても、WSLを再起動するとまた求められるのが面倒なので、それを解消する方法を調べてまとめました。
念のため、そもそものSSHエージェントにキーを追加する工程から記載しています。

RSAを利用したキーの保存コマンド

WSL2では、SSHエージェントを使ってGitHubのSSHキーを保存し、Enter passphrase for keyの入力を省略することができます。

通常通りSSHエージェントにキーを追加する工程

  1. WSL2ターミナルを開きます。

  2. SSHエージェントを起動します。

    eval $(ssh-agent)
    
  3. SSHキーをエージェントに追加します。

    ssh-add ~/.ssh/id_rsa
    

再起動後もSSHエージェントが有効な状態を維持するには

再起動後も有効な状態を維持するためには、~/.bashrc~/.zshrcなどのシェルの設定ファイルに以下の行を追加します。

# SSH_AGENT_PIDが空(エージェントが未起動)の場合のみエージェントを起動し、鍵を追加する
if [ -z "$SSH_AGENT_PID" ]; then
    eval "$(ssh-agent -s)" >/dev/null 2>&1
    ssh-add ~/.ssh/id_rsa
fi

これで、再起動してもSSHキーが有効な状態で保持されます。再起動後にSSHキーを再設定する必要はありません。

Ed25519用のコマンド

最近ではRSAよりEd25519が主流ですので、Ed25519を利用したコマンドも記載します。

# SSH_AGENT_PIDが空(エージェントが未起動)の場合のみエージェントを起動し、鍵を追加する
if [ -z "$SSH_AGENT_PID" ]; then
    eval "$(ssh-agent -s)" >/dev/null 2>&1
    ssh-add ~/.ssh/id_ed25519
fi

Discussion