Windows 10ではSSHサーバー、クライアントの機能が使える様になっているのですが、バージョンによって色々違いがあり自分でも混乱してきたのでわかる範囲でまとめました。
必要があれば随時更新します。
Microsoft SSH Server
Windows 10 Anniversary Update(1607)より、開発者機能の一部としてMicrosoft独自のSSHサーバーが利用可能になっています。
サーバーのみの提供でクライアント機能はありません。
この機能の実体は次の2つのサービスになります。*1
- SSH Server Broker
- SSH Server Proxy
機能に関する細かい話はこちらの記事を見ると良いでしょう。
こちらの記事では「Server Broker版SSH」と呼ばれ、具体的な用途についても触れられていませんが、Win32-OpenSSHのこちらのIssueにこのSSHサーバーについての質問があり、そこで中の人であるJoeyさんがこう答えています。
The "Microsoft SSH Server" is installed when you enable developer mode but is unrelated to the Windows Subsystem for Linux. As @jdunn0 said, it's used for the very specific scenario of deploying and testing UWP apps. You can read more about the server and scenario here: https://msdn.microsoft.com/en-us/windows/uwp/get-started/enable-your-device-for-development#ssh
コメントによるとこのサーバは「Microsoft SSH Server」と呼称され、特定のUWPアプリケーションのテスト(Device discovery系の機能っぽい)に使うためのものだそうです。
機能の詳細については、
を見ると良いでしょう。
組み込みWin32-OpenSSH
Windows 10 Fall Creators Update(1709)よりMicrosoftによるOpenSSHのポートであるWin32-OpenSSHがOSに組み込まれました。
こちらはMicrosoft SSH Serverと異なりサーバー、クライアント両方の機能が提供されています。
Windows 10 Fall Creators Update(1709)
Fall Creators Updateの時点ではOpenSSHの機能はベータ版です。
GUIからだと「設定→アプリと機能→オプション機能の追加」で機能を追加できます。
またコマンドではGet-WindowsCapability
で機能がインストールされているか確認でき、Add-WindowsCapability
で機能をインストールすることができます。
機能の確認
# 要管理者権限 Get-WindowsCapability -Online | ? { $_.Name -like 'OpenSSH*' }
結果
PS C:\> Get-WindowsCapability -Online | ? { $_.Name -like 'OpenSSH*' } Name : OpenSSH.Client~~~~0.0.1.0 State : NotPresent Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent
機能のインストール
# 要管理者権限 # OpenSSHクライアントをインストール Add-WindowsCapability -Online -Name 'OpenSSH.Client~~~~0.0.1.0' # OpenSSHサーバーをインストール Add-WindowsCapability -Online -Name 'OpenSSH.Server~~~~0.0.1.0'
インストールされたOpenSSHはC:\Windows\System32\OpenSSH
配下にあり、バージョンはv0.0.18
*2になります。
# バージョン確認 (Ver.7.5とコマンドからはバージョンが上手く確認できない...) PS C:\> ssh -V OpenSSH_7.5p1, without OpenSSL
サーバー機能は以下のサービスとしてインストールされます。
ssh-agent
:C:\Windows\System32\OpenSSH\ssh-agent.exe
sshd
:C:\Windows\System32\openssh\sshd.exe
ちなみにベータ版のためssh-keygen
などの初期設定をしないとsshd
サービスが動作しません。
設定方法の詳細は以下のPowerShell Teamのブログにありますので参考にしてください。
なお、このバージョンではsshd_config
はsshd.exe
と同じディレクトリに置く必要があります。
Windows 10 Spring Creators Update(1803)
Spring Creators UpdateでOpenSSHの機能は正式版となり、デフォルトでOpenSSHクライアントが導入済みの状態になっています。
すなわち、何もせずともはじめからssh.exe
が使えるということです。
# 要管理者権限 # SSHクライアントは最初からインストール済み PS C:\> Get-WindowsCapability -Online | ? { $_.Name -like 'OpenSSH*' } Name : OpenSSH.Client~~~~0.0.1.0 State : Installed Name : OpenSSH.Server~~~~0.0.1.0 State : NotPresent
ちなみに現時点でインストールされているバージョンは、v7.6.0.0p1-Betaです。
PS C:\> ssh -V OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4
サーバー機能に関してはFall Creators Updateと同様にAdd-WindowsCapability
でインストールする必要があります。
# 要管理者権限 # OpenSSHサーバーをインストール Add-WindowsCapability -Online -Name 'OpenSSH.Server~~~~0.0.1.0'
実体のサービスはFall Creators Updateの時から変わりませんが、こちらは正式版とあってサービスの表示名がきちんとした形になっています。
ssh-agent
(OpenSSH Authentication Agent
) :C:\Windows\System32\OpenSSH\ssh-agent.exe
sshd
(OpenSSH SSH Server
) :C:\Windows\System32\OpenSSH\sshd.exe
また、Spring Creators Updateでは、機能のインストール後にいきなりsshd
サービスを起動して構いません。
初期処理を自動で行いC:\ProgramData\ssh\
にsshd_config
などの各種設定ファイルを作成します。*3
このバージョンではC:\ProgramData\ssh\sshd_config
を設定する必要があります。
【2018/10/08追記】Windows 10 October 2018 Update(1809)
特に目新しい機能追加は無く、インストールされているバージョンがv7.7.2.0p1-Betaに更新されただけの様です。
PS C:\> ssh -V OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
【2019/05/22追記】Windows 10 May 2019 Update (1903)
Windows 10 October 2018 Updateから更新されずバージョンはv7.7.2.0p1-Betaのままでした。
PS C:\> ssh -V OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
【補足】Win32-OpenSSHの開発方針について
最後に補足としてWin32-OpenSSHの開発方針の変更について触れておきます。
もともとWin32-OpenSSHの開発は
で行われていました。
ちょっと事の経緯は把握できていないのですが、今後はopenssh-portableのWindows対応に舵を取り、openssh-portableのWindows対応が完了した時点でWin32-OpenSSHの方を終息させ、openssh-portable本体を主流としていく方針となった様です。
もとのWin32-OpenSSHはIssueとリリース管理のためだけに残されています。
現在のプロジェクトステータスがWin32-OpenSSHのWikiに載っていますので参照してください。
このため今後OpenSSHの情報を追う際は両方のリポジトリを見ておくと良いでしょう。