VSCode + MSYS2でSSHのパスフレーズ入力を記憶させる

VSCode のRemote – SSH拡張で SSH 接続する時に毎回秘密鍵のパスフレーズを求められるのが面倒すぎるので、パスフレーズを記憶させて入力を省略させる方法を調べた

前提

  • Remote – SSH 拡張を利用した公開鍵認証接続(パスフレーズあり)ができている
  • MSYS2 を入れている

手順 1

  1. PowerShell を管理者権限で起動させて次のコマンドを流す
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
  1. VSCode を起動して bash を開く
  2. ssh-add /c/Users/hogepiyo/.ssh/id_rsaで秘密鍵を ssh-agent に食べさせる
  3. パスフレーズを求められるので入力
  4. ssh-add -lで 3 で追加した PATH が登録されていることを確認
  5. VSCode から Remote – SSH を使って接続する
  6. パスフレーズ無しで入れれば OK、パスフレーズを求められたら以下の手順 2 へ

手順 2

以下の警告が流れてうまく行かないケース、この場合は Windows 付属の OpenSSH が腐っているので入れ替える

warning: agent returned different signature type ssh-rsa (expected rsa-sha2-512)

  1. PowerShell を管理者権限で起動させて次のコマンドを流して標準の OpenSSH をアンインストールする
Get-Service -Name ssh-agent | Stop-Service
sc.exe delete ssh-agent
Remove-WindowsCapability -Online -Name "OpenSSH.Client~~~~0.0.1.0"
Remove-WindowsCapability -Online -Name "OpenSSH.Server~~~~0.0.1.0"
  1. Chocolateyを入れる
    1. Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
    2. chocoでインストール確認
  2. OpenSSH をインストールする
    1. choco install openssh --package-parameters="/SSHAgentFeature"
  3. サービスからssh-agentが実行中で自動起動するようになっていることを確認
  4. ssh-add -lで手順 1 の 3 で追加した PATH が登録されていることを確認
  5. VSCode から Remote – SSH を使って接続する
  6. パスフレーズ無しで入れれば OK
  7. Windows Update の都度に腐った OpenSSH にすり替えられるので、その都度毎回やらないといけないのがにんともかんとも…