Windows 10 で SSH Agent を使用する

Windows 10 でもパスフレーズの入力を省略できる SSH Agent が使えた。

OpenSSH のインストール

PowerShell で次のコマンドを実行することで OpenSSH をインストールできる。

❯ Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Windowsssh を使っているか確認する。

❯ scoop which ssh
C:\WINDOWS\System32\OpenSSH\ssh.exe

❯ scoop which ssh-add
C:\WINDOWS\System32\OpenSSH\ssh-add.exe

OpenSSH Authentication Agent サービスを有効にする

「サービス (service.msc)」から OpenSSH Authentication Agent の設定を次のように変更する。

  • スタートアップの種類:自動

そしてコンテキストメニューから「開始」を選び、サービスを起動する

SSH の設定ファイルとディレクトリの権限を修正する

SSH の設定ファイルへのアクセスが自分以外のユーザに許可されていると SSH Agent を使用できない。

それを修正するには次のリポジトリに含まれるスクリプトを使用する。

このリポジトリをクローンして次のスクリプトPowerShell から実行する。

❯ ./contrib/win32/openssh/FixUserFilePermissions.ps1

秘密鍵の追加

この手順は Windows 以外の ssh-add と同じ。

❯ ssh-add ~/.ssh/id_dsa.pem
Enter passphrase for ~/.ssh/id_dsa.pem: (パスフレーズを入力する)
Identity added: ~/.ssh/id_dsa.pem

❯ ssh-add -l
登録した鍵一覧が表示される

Git の設定

Git for Windows や Scoop でインストールする Git は初期設定ではそれぞれのパッケージに含んだ ssh コマンドを使用するようになっている。しかしそうすると SSH Agent の恩恵を受けられないので、次の環境変数を設定して Windowsssh コマンドを使用するようにする。

❯ $env:GIT_SSH = "C:\Windows\System32\OpenSSH\ssh.exe"

この設定で上手くいったら Microsoft.PowerShell_profile.ps1 に書き込もう。