脳みそスワップアウト

揮発性なもので。おもにPHPのこととか。

Windows で MSYS2 の ssh-agent を使う

Windows で MSYS2 の ssh-agent を使う

WindowsGUIアプリ(IDEなど)と連携したくなったので調査。

MSYS2 でターミナルを起動(mingw64.exe) して、ssh-agent を起動して鍵を登録する。
私は ssh-agent の起動には keychain を使っている。

$ keychain
$ . ~/.keychain/${HOSTNAME}-sh
$ ssh-add ~/.ssh/xxx.id_rsa
$ ssh-add ~/.ssh/yyy.id_rsa

すると、環境変数 SSH_AGENT_PIDSSH_AUTH_SOCK が作られる。
ここまではいつも通り。

$ env | grep SSH_AUTH_SOCK
SSH_AUTH_SOCK={{SOCKファイルの場所}}

しかしこれらの環境変数Windows側には存在しないため、このままでは ssh-agent が使えない。

> echo %SSH_AUTH_SOCK%
%SSH_AUTH_SOCK%

いくつか方法はあるのだろうけど、ひとまず setx.exe を使うことにした。
これは cmd.exe シェルの set に当たるもので、Windows環境変数を設定する実行ファイル。

$ setx.exe SSH_AUTH_SOCK "$SSH_AUTH_SOCK"
$ setx.exe SSH_AGENT_PID "$SSH_AGENT_PID"

エクスプローラ もしくは Win+R から cmd.exe を新しく起動して確認。 できた。

> echo %SSH_AUTH_SOCK%
{{SOCKファイルの場所(Windowsのスラッシュ区切り)}}

ssh-agent も使えている。

> c:\msys64\usr\bin\ssh.exe xxx.com
Last login: Wed Nov  1 03:01:40 2017 from xxx

ぐぐったところ、pageant というツールを使ってもできるらしいけど、
使い慣れた sshssh-agent で今のところ十分。