Windows で OpenSSH Server を構築|PowerShell での導入と初期設定

  • URLをコピーしました!
目次

はじめに

かつて Windows で SSH を利用するには、PuTTY などのサードパーティ製ツールや、Cygwin などの環境構築が必要でした。現在の Windows 10(ビルド 1809 以降)および Windows 11 では、OpenSSH が OS の標準機能として採用されています。

ここで注意したいのは、他のサーバーへ接続する「OpenSSH Client(クライアント)」は既定でインストールされている一方、外部からの接続を受け入れる「OpenSSH Server(サーバー)」は手動で機能追加が必要な点です。なお、Windows Server 2025 では OpenSSH が既定で同梱されており(ただし初期状態では無効)、有効化の手順が少し異なります。本記事は Windows 10/11 を中心に、PowerShell での導入と初期設定を解説し、Server 2025 での有効化にも触れます。仕組みの背景(公開鍵と秘密鍵など)を整理したい場合は、関連記事『対称鍵と公開鍵の違い』もあわせて参照してください。

この記事でわかること
  • OpenSSH Server のインストール手順(PowerShell)
  • サービスの自動起動設定とファイアウォールの確認
  • 接続確認と、よくあるエラー(権限まわり)の対処法

OpenSSH とは(Client と Server の違い)

OpenSSH は、ネットワーク経由で他のコンピューターを安全に操作する「SSH プロトコル」を利用するためのオープンソースソフトウェアです。大きく「Client(クライアント)」と「Server(サーバー)」の 2 つの機能に分かれます。

特徴SSH Client(クライアント)SSH Server(サーバー)
立場操作する側操作される側
イメージリモコン(命令を送る)本体(命令を待つ)
データの向き自分 → 相手相手 → 自分
Windows の初期状態インストール済み未インストール(今回の作業)
利用シーンこの PC から Linux サーバー等を管理別の PC からこの PC を遠隔操作

つまり「この PC から Linux サーバーを操作したい」だけなら作業は不要ですが、「別の PC からこの Windows を操作したい」場合に、今回の作業が必要になります。

OpenSSH Server のインストール(PowerShell)

機能追加は「設定」アプリからも可能ですが、バージョンによってメニュー配置が変わるため、PowerShell を使う方法が手早く確実です。

  1. PowerShell を管理者権限で起動します(スタートボタンを右クリックし、「ターミナル(管理者)」または「Windows PowerShell(管理者)」を選択)
  2. 以下のコマンドを実行します。インターネット経由で機能がダウンロード・インストールされます。
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

実行後、完了まで数分かかる場合があります。

  1. インストールを確認します。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

OpenSSH.Server~~~~0.0.1.0 の State が Installed になっていれば成功です。なお、Windows Server 2025 では OpenSSH が既に同梱されているため、この手順は不要で、次の「初期設定」(サービスの起動)や、Server Manager の Local Server にある Remote SSH Access から有効化する形になります。

初期設定(サービスの起動とファイアウォール)

インストールしただけでは SSH サーバー機能は動いていません。サービスを開始し、再起動後も自動で立ち上がるように設定します。

Start-Service sshd

起動を確認します。

Get-Service sshd

StatusRunning になっていれば起動成功です。続いて、再起動後も自動起動するようスタートアップを「自動」に変更します。

Set-Service -Name sshd -StartupType 'Automatic'

通常、OpenSSH Server をインストールすると、ポート 22 番を許可するファイアウォール規則も自動的に作成・有効化されます。念のため確認しておきます。

Get-NetFirewallRule -Name *ssh*

規則名は OpenSSH-Server-In-TCP(表示名: OpenSSH SSH Server)で、Enabled : TrueAction : AllowDirection : Inbound になっていれば、受信を受け付ける準備が整っています。なお、環境によっては既定で Private プロファイルのみ有効な場合があるため、ドメイン環境などでは対象プロファイルもあわせて確認しておくと安心です。

参考: Microsoft Learn「Get started with OpenSSH Server for Windows」
“Installing OpenSSH Server creates and enables a firewall rule named OpenSSH-Server-In-TCP”
(OpenSSH Server をインストールすると、OpenSSH-Server-In-TCP という名前のファイアウォール規則が作成・有効化される)
https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse

SSH 接続確認とトラブルシューティング

実際に接続できるかテストします。別の PC(Mac や Linux、スマートフォンのターミナルアプリなど)から接続するのが理想ですが、手元にない場合は自分自身(localhost)への接続でも動作確認はできます。

# 書式: ssh <ユーザー名>@<IP アドレスまたはホスト名>
ssh user01@192.168.1.10

初回接続時は The authenticity of host ... can't be established. という確認が表示されるので、yes と入力して進みます。続いて Windows のユーザーパスワードを入力します(入力中は画面に表示されません)。なお、サーバー側の設定ファイルは C:\ProgramData\ssh\sshd_config にあり、ポート変更などの設定はここで行います。

「Bad owner or permissions」エラーの対処

接続時やコマンド実行時に、次のエラーが出ることがあります。

Bad owner or permissions on C:\Users\user01/.ssh/config

これは、SSH の設定ファイル(config)や鍵ファイルのアクセス権が緩い(他のユーザーも読める状態)ために出るエラーです。古い情報では「ファイルを削除する」という対処が見られますが、設定が消えてしまうため削除は避けます。正しくは、「ファイルの所有者(自分)以外のアクセス権を削除する」ことです。

エクスプローラーでの修正手順は次のとおりです。対象ファイルを右クリックして[プロパティ]→[セキュリティ]タブ→[詳細設定]を開き、「継承の無効化」から現在の継承権限を削除し、改めて自分自身のユーザーだけに「フルコントロール」を付与します。これで「自分しか読めない」状態になり、コマンドが正常に実行できます。

アップデート後に起動しなくなった場合

2024 年後半の累積更新では、C:\ProgramData\ssh の ACL(アクセス権)変更が原因で sshd が起動しなくなる事象も報告されました。アップデート後に起動しなくなった場合は、Microsoft のアドバイザリと回避策を確認することをおすすめします。

企業環境での注意点(オフライン・WSUS・ポリシー)

インターネットに接続していない環境や、WSUS・グループポリシーで更新を管理している環境では、Add-WindowsCapability が必要なファイルを取得できず、インストールに失敗することがあります(エラー 0x800F0954 など)。

その場合は、対象 OS の Features on Demand(FoD)ISO を入手してマウントし、-Source でその場所を指定し、-LimitAccess で Windows Update を参照しないように指定してオフラインでインストールします。

# D: はマウントした FoD ISO のドライブ
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -Source D:\ -LimitAccess

参考: Microsoft Learn「Can’t install OpenSSH Features」
“the OpenSSH features are available as optional Windows features”
(OpenSSH 機能はオプションの Windows 機能として提供される)
https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/cant-install-openssh-features

なお、winget で導入できる Win32-OpenSSH は GitHub リリースのプレビュー版で、OS 同梱のオプション機能とは別系統です。基本的には、本記事のとおり OS 標準機能として追加する方法をおすすめします。

まとめ

本記事では、Windows 標準機能の OpenSSH Server を PowerShell で導入・初期設定する手順を解説しました。標準機能で完結し、数コマンドで構築できます。初期状態はパスワード認証のため、インターネット経由で使う場合などは、公開鍵認証への移行もあわせて検討したいところです。設定手順は関連記事『OpenSSH 公開鍵認証の設定手順』を参照してください。

  • OpenSSH Client は既定、Server は手動追加が必要
  • Windows Server 2025 は同梱されており有効化から始める。
  • インストール後はサービス起動と自動起動を設定する。
  • ファイアウォール規則 OpenSSH-Server-In-TCP を確認する。
  • 設定ファイルは C:\ProgramData\ssh\sshd_config にある。
  • 権限エラーは削除せずアクセス権の調整で対処する。
  • 次の一歩として公開鍵認証への移行を検討する。

以上、最後までお読みいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

関西を拠点に活動する、現役インフラエンジニア。経験20年超。

大手通信キャリアにて、中〜大規模インフラ(ネットワーク・サーバ・クラウド・セキュリティ)の設計・構築およびプロジェクトマネジメントに従事。現場で直面した技術課題への対処や、最新の脆弱性情報への実務対応を、一次情報として発信しています。

保有資格
CCIE Lifetime Emeritus(取得から20年以上)/ VCAP-DCA / Azure Solutions Architect Expert

▶ 運営者プロフィール(詳細)

目次