目的
Obsidian Git プラグインで SSH 鍵エージェントを利用したい。
ついでに他の接続方法(下記)も同じエージェントを使いたい。
- PuTTY (および WinSCP 等の関連アプリ)
- windows の OpenSSH
- git bash(Git for Windows)
- (未着手) WSL2 上の SSH
概要
Qiita - 混沌を極めるWindowsのssh-agent事情#筆者の構成 のバリエーションです。(作者の @slotport 様、素晴しい記事をありがとうございます)
差異は次の 2点です。
- Obsidian Git 用の設定(Git for Windows で Windows 添付の OpenSSH を使う)
- やや細かい手順を記載
設定の概要(手順は下で詳述)
- pageant をスタートアップに追加(自動起動)
- 自動起動 pageant に OpenSSH 用オプションを追加
- OpenSSH 設定に pageant 連携を追加
- 環境変数で Git for Windows の ssh を変更(OpenSSH 利用)
- (念の為)Git for Windows の ssh 実行ファイルを隠す
- サインインし直して動作チェック
詳しい人向けサマリー(要点のみ)
- pageant に起動時オプション
--openssh-config <ファイルパス>
を追加 - OpenSSH の .ssh/config に
Include <ファイル>
行を追加(上のファイルを指定) - Git for Windows が OpenSSH のバイナリを使うよう環境変数 GIT_SSH を設定
※GfW への対応が姑息的なので、他の MSYS2 環境からの鍵エージェント利用には対応していません(そういう利用ケースは稀かと…)
設定手順
pageant をスタートアップに登録
- Win+R キーで「ファイル名を指定して実行」ダイアログを開き
shell:startup
と入力して OK ボタンでスタートアップフォルダを開く - 「新規作成」でショートカットの作成を開始し、PuTTY フォルダの pageant.exe を参照先に選ぶ
- 「次へ」ボタンで進み、好きな名前を付けて「完了」ボタンを押す
自動起動 pageant に OpenSSH 用オプションを追加
- 上で作成したショートカットを右クリックして「プロパティ」を開く
- 「リンク先」の内容の最後に半角スペースと
--openssh-config %USERPROFILE%\.ssh\pageant.conf
を追加する。
※ファイル名「pageant.conf」と、そこまでのパスは変えても良いが、後述の手順でも同じ指定にすること - 確認:作成したショートカットを実行し、タスクトレイで pageant が動作すること
補足:プロパティの「作業フォルダ」にSSH鍵フォルダを指定しておくと、鍵の追加時にそこから始まるので便利
OpenSSH 設定に pageant 連携を追加
- エクスプローラを開き、アドレスバーに
%USERPROFILE%
と入力して移動する - 中に
.ssh
フォルダがあるはずなので、それを開く(無ければ作る) - config ファイルをメモ帳(又は好きなエディタ)で開く(無ければ作る)
- 先頭(か適当な位置)に次の1行を追加:
Include pageant.conf
- pageant のオプションで別のファイル名やパスを指定した場合は、それに合わせる
- config ファイルの位置が基準になるので、そこからの相対パスでよい
- 確認:OpenSSH(Windows の ssh)で動作チェック
(pageant に鍵を登録し、接続を試す。パスフレーズを聞かれずに済めば OK)
環境変数で Git for Windows の ssh を変更(OpenSSH 利用)
- スタートメニュー → 設定 → システム → バージョン情報 を開く
- 「デバイスの仕様」下部「関連リンク」の「システムの詳細設定」をクリック(Win11の場合)
- 表示されたダイアログ下部「環境変数」ボタンをクリック
- ユーザ環境変数の「新規」ボタンをクリック
- 以下のように入力して「OK」で確定
- 変数名:
GIT_SSH
- 変数値:
%WINDIR%\System32\OpenSSH\ssh.exe
- 変数名:
- 確認:ユーザ環境変数に追加され、値の表示が「C:\Windows\System32…」のように変わっている事
- 環境変数ダイアログを「OK」で閉じる
- システムのプロパティダイアログも「OK」で閉じる
(念の為)Git for Windows の ssh 実行ファイルを隠す
- Git for Windows の Git Bash を開く
- (Git for Windows 添付の)ssh 類を以下のように移動して隠す
cd /usr/bin mkdir git_for_windows_ssh mv ssh* git_for_windows_ssh/ # 下はスキップしてもよい(使うかもしれないファイルを戻しているが動作は未確認) cd git_for_windows_ssh mv sshd.exe ssh-copy-id ssh-pageant.exe ../
代替手順:ssh.exe だけ改名
Git Bash で以下を実行
mv /usr/bin/ssh.exe /usr/bin/gfw_ssh.exe
巻き戻し方法(移動)
- Git Bash を開く
- 移動していたファイルを元の場所に戻す
cd /usr/bin/git_for_windows_ssh mv ssh* ..
巻き戻し方法(代替手順:改名)
Git Bash で以下を実行
mv /usr/bin/gfw_ssh.exe /usr/bin/ssh.exe
サインインし直して動作チェック
- 環境変数の変更を有効にするため、一度サインアウトする(再起動でも可)
- サインインし直すと、タスクバーに自動起動された pageant が有るはず
- pageant にSSH鍵を追加(パスフレーズがあれば聞かれる)しておく
- 上で追加したSSH鍵を使うホストに Git Bash で
ssh
すると(パスフレーズ不要で)ログインできるはず - 同様に、上で追加したSSH鍵を利用する
git
コマンドを試す(パスフレーズ不要のはず) - Obsidian Git プラグインの動作を試す(SSH 鍵は pageant に追加しておく)
注意点
- pageant 以外(ssh-add など)での鍵の追加はできません
→ Git Bash で ssh-add として pageant.exe にシンボリックリンクを設定するのは可能です(コマンド発行時に .ppk 鍵指定の点に注意) - 鍵の追加タイミングはご自身で調整してください
(pageant 起動時に鍵ファイルパスも指定は可能。その場合は起動時にパスフレーズを聞かれます…)
参照リンク
Qiita - 混沌を極めるWindowsのssh-agent事情
https://qiita.com/slotport/items/e1d5a5dbd3aa7c6a2a24
そのものズバリの説明。こちらのおかげで今回の設定ができました。
非常によくまとまっていますので、ぜひ一読されることをお勧めいたします。
Omni SSH Agent
https://github.com/masahide/OmniSSHAgent
各種の接続を受け付ける汎用 pageant 互換アプリとのこと。
便利そうですが、今回は pageant メイン(+他の互換アプリを使うかも)なのでパスしました。
※ssh-add コマンドからも鍵の追加ができるようです。そのような使い方を希望される方はご検討されては?
stream-connector
https://www.pg-fl.jp/download/stream-connector.htm
ソケット通信やパイプ入出力を転送するための Windows アプリとのこと。
これを pageant と組み合わせる方法が「Qiita - 混沌を〜」のコメントに有りました。
tcp,wsl,cygwin など、いろいろ対応しているので、ユーティリティとしても活用の機会がありそうですね。
@ IT - 【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする
https://atmarkit.itmedia.co.jp/ait/articles/1805/11/news035.html
Windows11 での環境変数の設定手順の紹介です。
画面写真が豊富なので、上の文章だけで分かり辛い場合はご参照ください。