【小ネタ】OpenSSH クライアントをバージョンアップする方法

2023.08.17

アノテーション 構築チームのいたくらです。
Windows のオプション機能でインストールした OpenSSH クライアントをバージョンアップする機会があったので備忘としてまとめました。

環境

  • エディション:Windows 11 Pro
  • バージョン:22H2
  • OS ビルド:22621.2134

OpenSSH クライアントは、設定>アプリ>オプション機能 でインストール済みです。

バージョンアップ前の OpenSSH クライアントのバージョンは以下の通りでした。

PowerShell 7.3.6
PS C:\Users\ユーザ名> ssh -V
OpenSSH_for_Windows_8.6p1, LibreSSL 3.4.3

事前確認

そもそもオプション機能でインストールした OpenSSH クライアントがどこに格納されているかを把握していなかったので確認します。
自分の場合は C:\Windows\System32\OpenSSH に格納されていました。

設定>システム>バージョン情報>システムの詳細設定>環境変数 で環境変数に移動し、
システム環境変数の Path を確認すると、C:\Windows\System32\OpenSSH が含まれていました。

winget を使用して OpenSSH を検索

winget は Windows 用のパッケージ管理ソフトです。
バージョン管理がしやすくなるのでこちらを利用します。

winget search で、パッケージを探すことができます。
試しに winget search ssh で検索しようとしたところ、同意を求められたので「はい」を選択して次に進みます。

PS C:\Users\ユーザ名> winget search ssh
'msstore' ソースでは、使用する前に次の契約を表示する必要があります。
Terms of Transaction: https://aka.ms/microsoft-store-terms-of-transaction
ソースが正常に機能するには、現在のマシンの 2 文字の地理的リージョンをバックエンド サービスに送信する必要があります (例: "US")。

すべてのソース契約条件に同意しますか?
[Y] はい  [N] いいえ: y

同意後、すぐに検索結果が表示されました。

名前                                  ID                                   バージョン    一致                  ソース
----------------------------------------------------------------------------------------------------------------------
Termius - SSH & SFTP client           9NK1GDVPX09V                         Unknown                             msstore
AbsoluteTelnet SSH Client             9N77H85H11VS                         Unknown                             msstore
SSH Control                           9P6BSH2W7BNZ                         Unknown                             msstore
SSH Tunnel                            9NR7P38PKLT4                         Unknown                             msstore
TKey SSH Agent                        Tillitis.TKeySSHAgent                0.0.6.0       Tag: ssh              winget
IO Ninja                              tibbo.ioninja                        5.3.2         Tag: ssh              winget
Termius                               Termius.Termius                      8.0.4         Tag: ssh              winget
TeamIDE                               TeamIDE.TeamIDE                      2.3.7         Tag: ssh              winget
SmarTTY                               Sysprogs.SmarTTY                     3.3           Tag: ssh              winget
Syncplify.me Server!                  Syncplify.Server                     5.1.30        Tag: ssh              winget
SSHFS-Win                             SSHFS-Win.SSHFS-Win                  3.5.20357     Tag: ssh              winget
(以下省略)

検索ワード ssh はヒットしすぎたので、openssh にして再度検索します。

PS C:\Users\ユーザ名> winget search openssh
名前         ID                     バージョン ソース
------------------------------------------------------
OpenSSH Beta Microsoft.OpenSSH.Beta 9.2.2.0    winget

目当てのパッケージを確認できました。

winget を使用してアップグレードできるパッケージを確認

オプション機能でインストールした OpenSSH クライアントは winget の管理対象なのか?と気になったので、winget upgrade でアップグレードできるパッケージを確認します。

PS C:\Users\ユーザ名> winget upgrade
名前                                                    ID                           バージョン    利用可能      ソース
-----------------------------------------------------------------------------------------------------------------------
Git                                                     Git.Git                      2.41.0        2.41.0.3      winget
Zoom                                                    Zoom.Zoom                    5.15.5.19404  5.15.7.20303  winget
Obsidian                                                Obsidian.Obsidian            1.2.7         1.3.7         winget
Microsoft Visual C++ 2015-2019 Redistributable (x86) -… Microsoft.VCRedist.2015+.x86 14.23.27820.0 14.38.32919.0 wingetTeams Machine-Wide Installer                            Microsoft.Teams              1.3.0.21759   1.6.00.20074  winget
Cloudflare WARP                                         Cloudflare.Warp              23.3.412.0    23.7.160.0    winget
Microsoft Visual C++ 2015-2019 Redistributable (x64) -… Microsoft.VCRedist.2015+.x64 14.23.27820.0 14.38.32919.0 wingetGoogle Chrome                                           Google.Chrome                116.0.5845.96 116.0.5845.97 winget
8 アップグレードを利用できます。

オプション機能でインストールした OpenSSH クライアントは winget の管理対象ではないようです。
ということで、インストールから始めます。

winget を使用してインストール

winget install で、パッケージをインストールできます。

PS C:\Users\ユーザ名> winget install Microsoft.OpenSSH.Beta
見つかりました OpenSSH Beta [Microsoft.OpenSSH.Beta] バージョン 9.2.2.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/PowerShell/Win32-OpenSSH/releases/download/v9.2.2.0p1-Beta/OpenSSH-Win64-v9.2.2.0.msi
  ██████████████████████████████  5.10 MB / 5.10 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

インストールできたので、確認を兼ねて winget show でパッケージ情報を出力します。

PS C:\Users\ユーザ名> winget show Microsoft.OpenSSH.Beta
見つかりました OpenSSH Beta [Microsoft.OpenSSH.Beta]
バージョン: 9.2.2.0
公開元: Microsoft Corporation
発行元 URL: https://github.com/PowerShell/Win32-OpenSSH
発行元のサポート URL: https://github.com/PowerShell/Win32-OpenSSH/issues
作成者: Microsoft Corporation
モニカー: openssh-beta
説明: OpenSSH is a complete implementation of the SSH protocol (version 2) for secure remote login, command execution and file transfer
(以下省略)

インストールできていそうです。

環境変数を追加

winget でインストールした OpenSSH は、C:\Program Files\OpenSSH に格納されていました。
そのため、システム環境変数の Path に、C:\Program Files\OpenSSH を追加します。

アップグレード後のバージョンを確認

バージョンアップ後の OpenSSH クライアントのバージョンは以下の通りでした。

PowerShell 7.3.6
PS C:\Users\ユーザ名> ssh -V
OpenSSH_for_Windows_9.2p1, LibreSSL 3.7.2

補足

今回インストールしたパッケージを利用するように変更したので、元々使用していた OpenSSH クライアントは消していいのでは?と思いアンインストールしてみました。

自分の環境は WSL2 上で 1Password を使用して GitHub に SSH 接続するという設定をしているので、git pull が問題なく実行できるかを確認します。
WSL2 で実行している VSCode のターミナルで、git pull を実行します。

実行後、1Password のポップアップ画面が表示され、無事に pull できました。
ということで、OpenSSH クライアントをアンインストールしても問題なさそうでした。
(併せて、システム環境変数の Path に登録されていた C:\Windows\System32\OpenSSH は削除しました)

あとがき

「Windows のオプション機能でインストールした OpenSSH クライアントをバージョンアップする」と言いつつ、実際は最新バージョンをインストールすることになりましたが、結果としてバージョンが管理しやすくなったので良かったです。

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。
現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。