Windows 10 バージョン1803からは、OpenSSHクライアントおよびサーバ機能がWindowsに組み込まれました。Windows Server,version 1803ではOpenSSHクライアントが、Windows Server,version 1809およびWindows Server 2019からはOpenSSHサーバが同様に組み込まれています。今回は、このOpenSSHサーバ機能に注目します。
本連載第37回では、WindowsとLinuxの混在環境におけるWindows 10のLinux関連機能を紹介しました。
その中で、Windows 10 バージョン1803から「OpenSSHクライアント」(C:\Windows\System32\OpenSSH\ssh.exe、ssh-keygen、scp.exeなど)と「OpenSSHサーバ」(C:\Windows\System32\OpenSSH\sshd.exe)についても触れました。OpenSSHクライアントは標準でインストールされ、OpenSSHサーバは「オンデマンド機能」として、オプションでインストールできます。
Windows Serverの半期チャネル(Semi-Annual Channel:SAC)であるWindows Server,version 1803からは、Windows 10バージョン1803と同様にOpenSSHクライアントが組み込まれ、標準でインストールされるようになりました。
本連載第37回では、OpenSSHサーバも含まれるように書いてしまいましたが、実際にはWindows Server,version 1809および長期サービスチャネル(Long-Term Servicing Channel:LTSC)のWindows Server 2019からオプションでOpenSSHサーバが利用可能になりました。
ちなみに、OpenSSHのバージョンは、Windows 10 バージョン1803が「OpenSSH_for_Windows_7.6p1, LibreSSL 2.6.4」、Windows 10 バージョン1809が「OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5」です。
アプリケーション開発者やITプロフェッショナルの方なら、Windows 10にOpenSSHクライアントが標準搭載され、他のWindowsのコマンドと同じように、すぐに、どこからでも(標準でPATHが通っているという意味で)、利用できることは特に歓迎していることでしょう。
例えば、オンプレミスやクラウド上のLinuxサーバにsshで接続したり、scpやsftpでファイル転送したり、あるいはセキュアな接続のための公開鍵と秘密鍵のペアを作成したりするのに、外部のツールを入手してセットアップする必要はもうありません。
Windowsでは「PowerShell Remoting」や「WinRM/WinRS」といったセキュアなリモート端末環境が標準で利用できますが、OpenSSHサーバ機能はもう一つのセキュアなリモート端末環境になります。これは、特にオンプレミスやクラウド上のWindows Serverをリモート管理する上で便利です。
例えば、Linux標準のsshコマンドを利用して(Linuxで利用できる「PowerShell Core 6」もありますが)、Windows Serverにリモート接続し、コマンドラインで管理操作を実行できます。また、リモートデスクトップ接続やPowerShell Remotingなど、Windows標準のリモート接続手段が何らかの理由で突然利用不能になってしまった場合に、OpenSSHサーバを有効化しておけば安全に接続できる可能性があります。
OpenSSHサーバは、Windows 10 バージョン1803以降、Windows Server 2019、Windows Server,version 1809の「オンデマンド機能(Feature on Demand)」としてインストールできます。
Windows 10とWindows Server 2019(デスクトップエクスペリエンス)の場合は、「設定」アプリを開き、「アプリ」→「アプリと機能」→「オプション機能の管理」を開いて、「+機能の追加」をクリックし、「OpenSSHサーバー」を展開して「インストール」をクリックします(画面1)。オンデマンド機能のインストールソースはインターネットからダウンロードされるため、インストールにはインターネットに接続している必要があります。
OpenSSHサーバのインストールが完了すると、「オプション機能の管理」の一覧に追加されます。また、サービス名「sshd」、表示名「OpenSSH SSH Server」でWindowsのサービスとして登録されます。ただし、サービスのスタートアップは「手動」になっているので、常時利用可能にしておきたい場合はsshdの構成をカスタマイズ後に「自動」に切り替えておきましょう。
インストール直後に動作を確認するには、PowerShellウィンドウを開いて次の2つのコマンドラインを実行し、接続できることを確認します(画面2)。
Start-Service sshd ssh ユーザー名@コンピュータ名(またはIPアドレス)
sshdの既定の構成はパスワードのみの接続が安全ではありませんが、この時点ではリモートからの接続は「Windows Defenderファイアウォール」でブロックされるはずです(明示的にTCPポート22を許可していない限り)。
sshdの構成ファイルは、「C:\ProgramData\ssh\sshd_config」にあります。この構成ファイルを適宜編集して、認証方法やポート番号などをカスタマイズします。カスタマイズが完了したら、sshdサービスを再起動して動作を確認します。
意図した通りに動作するようであれば、サービスのスタートアップを「自動」に切り替え、Windows Defenderファイアウォールの「例外の規則」にTCPポート22(または他のポート番号)への接続許可を作成します。PowerShellでこれらの操作を行うには、次のようにコマンドラインを実行します(画面3、画面4)。
Restart-Service sshd Set-Service -Name sshd -StartupType Auto New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName "sshd"
なお、sshd_configを編集する際には、Windowsで利用できないディレクティブや設定が存在することに注意してください。例えば、認証方法(AuthenticationMethods)としてはパスワード(password)と公開鍵(publickey)が使用できます。
また、「PermitRootLogin」ディレクティブはWindowsには適用されません。代替方法として「DenyGroups」ディレクティブでAdministratorsグループを拒否するように構成できます。その他、サポートされないディレクトリが幾つか存在します。詳しくは、以下のドキュメントで説明されています。
Windows Server 2019のServer Coreインストール環境や、Server Coreでのみ提供されるWindows Server,version 1809の場合、「設定」アプリを使用したオンデマンド機能のインストールができません。
Server Core環境では、PowerShellで次のコマンドラインを実行することで、OpenSSHサーバ機能をインストールできます。
Get-WindowsCapability -Online -Name OpenSSH* Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
1行目で、OpenSSHクライアントとOpenSSHサーバ機能の名前(Name)およびインストール状態(State)を確認し、2行目のコマンドラインでOpenSSHサーバをインストールします(画面5)。なお、Windows Server,version 1803以前はオンデマンド機能としてのOpenSSHサーバは提供されません。
岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(2018/7/1)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。
Copyright © ITmedia, Inc. All Rights Reserved.