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にすり替えられるので、その都度毎回やらないといけないのがにんともかんとも…