Windows 10 の 1803 以降のバージョンには標準で OpenSSH クライアントがインストールされていますが、アドオンとして OpenSSH サーバも用意されています。
この記事では、標準で用意されている OpenSSH サーバのセットアップ手順を解説します。
インストール手順
インストールは GUI(設定アプリ)でのやり方と、コマンド(PowerShell)でのやり方と 2 種類あります。
より具体的な手順は以下を参考にして下さい。
https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
Windows 10 にオンデマンド機能の OpenSSH サーバをインストールする方法
以下、コマンドラインでのインストール方法について解説します。
PowerShell を 管理者モード で開きます。
以下のように実行します。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
正常終了すると以下のように返却されます。
Path :
Online : True
RestartNeeded : False
環境によっては、以下のように失敗することがあります。
Add-WindowsCapability : Add-WindowsCapability failed. Error code = 0x800f0954
At line:1 char:1
+ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-WindowsCapability], COMException
+ FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand
これは WSUS 導入環境など、 Windows のコンポーネントをインターネット経由ではなく WSUS サーバから配信しているような環境で起こる現象です。
これはグループポリシーエディタで解決する事ができます。
OpenSSH Server Install failed, contact your administrator to get this feature
gpedit.msc
ローカルグループポリシーエディターが開いたら、「コンピューターの構成」→「管理用テンプレート」→「システム」と展開します。
「オプションコンポーネントのインストールおよびコンポーネントの修復のための設定を指定する」をダブルクリックします。
ウインドウ左上の「有効」ラジオボタンをクリックし、左下の「Windows Server Update Service (WSUS) の代わりに、Windows Update から修復コンテンツとオプションの機能を直接ダウンロードする」にチェックを入れます。
「適用」をクリック、「OK」をクリックします。
ローカルグループポリシーエディターも閉じて OK です。
PowerShell(管理者モード)で以下のように実行します。
gpupdate /force
そのあと、もう一度インストールを試行します。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
これで成功するはずです。
OpenSSH の設定
引き続き PowerShell(管理者モード)での作業です。
SSH サービスを起動します。
Start-Service sshd
サービスを自動起動したいなら以下のコマンドを実行します。
Set-Service -Name sshd -StartupType 'Automatic'
ファイアウォールの設定をします。
Get-NetFirewallRule -Name *ssh*
以下のように、Enabled : True
と返って来れば OK。
Name : OpenSSH-Server-In-TCP
DisplayName : OpenSSH SSH Server (sshd)
Description : Inbound rule for OpenSSH SSH Server (sshd)
DisplayGroup : OpenSSH Server
Group : OpenSSH Server
Enabled : True
Profile : Any
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
SSH 接続
PuTTY や Tera Term で localhost:22 への接続を試行します。
もちろん PowerShell で ssh localhost
でも OK です。
端末を Microsoft アカウントで利用している場合でも、実ユーザー名(C:¥Users¥???? の ???? の部分)とそのパスワードでログインできます。
ネットワーク上の他の端末から SSH 接続がうまく行くかも確認しましょう。
Windows のデフォルトシェルはコマンドプロンプトなので注意。
参考
https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
https://social.technet.microsoft.com/Forums/en-US/251804c1-883e-4ec8-a378-352dabbe87dd/openssh-server-install-failed-contact-your-administrator-to-get-this-feature?forum=ws2019