概要
本記事では、Windows Server 上に OpenSSH Server をインストールし、鍵認証・サービス構成・ファイアウォール設定までをステップ形式で解説します。
変数表記について
| 変数名 | 設定例 | 備考 |
|---|---|---|
<<SERVER>> |
192.168.1.10 |
接続先ホスト名またはIPアドレス |
ステップ 1: OpenSSH サーバーのインストール
管理者権限の PowerShell を起動し、次のコマンドを実行します
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
ステップ 2: サービス起動&自動起動設定
インストール後、SSH サーバー(sshd)サービスを起動し、自動起動に設定します:
# サービス開始
Start-Service sshd
# 自動起動を有効にする
Set-Service -Name sshd -StartupType Automatic
💡 補足
sshdサービスを初回起動すると、自動的に初期設定ファイルやホストキーが生成されます。
これには以下のファイルが含まれます:
%ProgramData%\ssh\sshd_config(設定ファイル)%ProgramData%\ssh\ssh_host_*(ホスト鍵一式)設定変更を行う場合は、これらのファイルが生成された後に編集してください。
ステップ 3: ファイアウォール設定
SSH 通信(通常ポート 22)を許可するため、Windows Defender ファイアウォールにインバウンドルールを登録します:
New-NetFirewallRule -Name "OpenSSH-Server" -DisplayName "OpenSSH Server (sshd)" `
-Enabled True -Direction Inbound -Protocol TCP -LocalPort 22 -Action Allow
ステップ 4: 鍵認証方式の設定(推奨)
-
authorized_keysに公開鍵を登録します
- 一般ユーザーの場合は、ユーザープロファイル配下の
.ssh\authorized_keysに公開鍵を登録します。 - Administratorsの場合は、
%ProgramData%\ssh\administrators_authorized_keysに登録します。
- 一般ユーザーの場合は、ユーザープロファイル配下の
-
サーバー側で
sshd_config(通常%ProgramData%\ssh\sshd_config)を編集し、以下を確認/設定します:PubkeyAuthentication yes AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
ステップ 5: 初回接続と確認
クライアントから次のように接続します:
ssh Administrator@<<SERVER>>
初回接続時にはホストキーの確認プロンプトが表示されます。
接続後、whoami コマンドなどでログインユーザーを確認し、期待するユーザーであることを確認してください。
ステップ 6: 制限とセキュリティ強化
sshd_configで以下の設定値を追加/変更します(例):Port 2222 AllowGroups SSHAdmins AllowUsers Administrator deployuser PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yesPort 2222
デフォルトのポート22から変更することで、一般的な攻撃を回避しセキュリティを向上させます。AllowGroups SSHAdmins
SSH接続を許可するグループを限定し、不正アクセスのリスクを低減します。
ℹ️ 注意
Windows Server 2025 以降では、SSH接続を許可するグループ制限がデフォルトで適用されます。また、一部の言語環境では、組み込みの "OpenSSH Users" グループ("openssh users")が正しく機能しない場合があります。AllowUsers Administrator deployuser
接続可能なユーザーを限定し、不要なアカウントからのアクセスを防ぎます。PasswordAuthentication no
パスワード認証を無効にし、鍵認証のみに限定することで安全性を高めます。KbdInteractiveAuthentication no
キーボードインタラクティブ認証を無効にし、不正な認証方法を制限します。PubkeyAuthentication yes
鍵認証を有効にし、より安全な認証方式を採用します。
※SSHAdminsグループやdeployuserアカウントを事前に作成し、必要最小限の権限に抑えます。
- 接続ログの監査を強化するため、
LogLevel VERBOSEに設定し、ログを常時収集できるようにします。
ステップ 7: ログの確認
-
PowerShell から直近ログを取得するには以下を実行します:
Get-WinEvent -LogName OpenSSH/Operational ` | Where-Object { $_.TimeCreated -ge (Get-Date).AddHours(-1) } ` | Select-Object TimeCreated, Id, LevelDisplayName, Message💡 補足
実際に使用可能な ログ名は以下で確認できます:wevtutil el | findstr OpenSSH表示された名前を
-LogNameに指定してください。
まとめ
Windows Server 上に SSH サーバーを構築することで、Linux/Unix 環境と同様の SSH 接続管理が可能になります。鍵認証やファイアウォール設定、サービス構成などを正しく設定することで、安全なリモート管理基盤を構築できます。
