Windows Server および Windows 用 OpenSSH サーバーの構成
Windows Server 2022、Windows Server 2019、Windows 10 (ビルド 1809 以降) に適用されます
この記事では、OpenSSH サーバー (sshd) の Windows 固有の構成について説明します。
OpenSSH では、構成オプションに関する詳細なドキュメントが OpenSSH.com で、オンラインで管理されているため、重複を避け、このドキュメント セットでは説明しません。
OpenSSH 構成ファイル
OpenSSH には、サーバーとクライアントの両方の設定用構成ファイルがあります。 OpenSSH はオープン ソースであり、Windows Server 2019 および Windows 10 (ビルド 1809) 以降の Windows Server および Windows クライアント オペレーティング システムに追加されています。 そのため、OpenSSH 構成ファイルに関するオープンソース ドキュメントの内容については、ここでは繰り返し説明しません。 クライアント構成ファイルについては、ssh_config のマニュアル ページで説明されており、OpenSSH サーバー構成ファイルについては、sshd_config のマニュアル ページで説明されています。
既定では、OpenSSH サーバー (sshd) は %programdata%\ssh\sshd_config から構成データを読み取りますが、-f
パラメーターを指定して sshd.exe
を起動すると、別の構成ファイルを指定できます。 ファイルが存在しない場合は、サービスの開始時に sshd によって既定の構成で生成されます。
Windows では、OpenSSH クライアント (SSH) は、構成ファイルから次の順序でデータを読み取ります。
- -F パラメーターで構成ファイルへのパスとそのファイルのエントリ名を指定して、ssh.exe を起動した場合。
- %userprofile%\.ssh\config にあるユーザーの構成ファイル。
- %programdata%\ssh\ssh_config にあるシステム全体の構成ファイル。
Windows での OpenSSH 用の既定のシェルの構成
既定のコマンド シェルでは、ユーザーが SSH を使用してサーバーに接続するときに表示されるエクスペリエンスが提供されます。 最初の既定の Windows は、Windows コマンド シェル (cmd.exe) です。 Windows には PowerShell も含まれています。また、サードパーティ製のコマンド シェルも Windows で使用でき、サーバーの既定のシェルとして構成することもできます。
既定のコマンド シェルを設定するには、まず、OpenSSH インストール フォルダーがシステム パスにあることを確認します。 Windows では、既定のインストール フォルダーは、%systemdrive%\Windows\System32\openssh にあります。 次のコマンドは、現在のパスの設定を示しており、それに既定の OpenSSH インストール フォルダーを追加します。
コマンド シェル | 使用するコマンド |
---|---|
コマンド | path |
PowerShell | $env:path |
既定の ssh シェルを構成するには、Windows レジストリで、シェルの実行可能ファイルへの完全なパス HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
を文字列値 DefaultShell
に追加します。
たとえば、次の管理者特権の PowerShell コマンドでは、既定のシェルが powershell.exe に設定されます。
New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force
sshd_config 内の Windows 構成
Windows では、sshd は既定で、%programdata%\ssh\sshd_config から構成を読み取りますが、-f
パラメーターを指定して sshd.exe
を起動すると、別の構成ファイルを指定できます。
ファイルが存在しない場合は、サービスの開始時に sshd によって既定の構成で生成されます。
以下に示す要素では、sshd_config のエントリを使用して可能な Windows 固有の構成が提供されます。 他にも使用できる構成設定もありますが、オンラインの Win32 OpenSSH ドキュメント で説明されているため、ここでは取り上げません。
ヒント
OpenSSH サーバー (sshd) は、サービスの開始時に構成ファイルを読み取ります。 構成ファイルを変更するには、サービスを再起動する必要があります。
AllowGroups、AllowUsers、DenyGroups、DenyUsers
サーバーに接続できるユーザーおよびグループを制御するには、AllowGroups、AllowUsers、DenyGroups、DenyUsers ディレクティブを使用します。 allow および deny ディレクティブは、DenyUsers、AllowUsers、DenyGroups、最後に AllowGroups の順に処理されます。 すべてのアカウント名は、小文字で指定する必要があります。 ssh_config 内の PATTERNS とワイルドカードの詳細については、sshd_config OpenBSD のマニュアル ページを参照してください。
ドメイン ユーザーまたはグループを使用してユーザー/グループ ベースの規則を構成する場合は、user?domain*
の形式を使用します。
Windows では、ドメイン プリンシパルを指定するために複数の形式を使用できますが、標準の Linux パターンと競合するものが多数あります。
そのため、FQDN をカバーするために * が追加されています。
また、この方法では、形式 "ユーザー名@ホスト" との競合を回避するために、@ の代わりに "?" が使用されます。
ワーク グループ users/groups とインターネットに接続されたアカウントは、常にローカルのアカウント名に解決されます (標準の Unix 名と同様に、ドメイン部分がありません)。 ドメイン ユーザーとグループは、NameSamCompatible 形式 (domain_short_name\user_name) に厳密に解決されます。 すべてのユーザー/グループ ベースの構成規則は、この形式に従う必要があります。
次の例では、ホスト 192.168.2.23 からの contoso\admin を拒否し、contoso ドメインのすべてのユーザーをブロックし、 さらに、contoso\sshusers グループと contoso\serveroperators グループのメンバーであるユーザーを許可します。
DenyUsers contoso\admin@192.168.2.23
DenyUsers contoso\*
AllowGroups contoso\sshusers contoso\serveroperators
次の例では、ホスト 192.168.2.23 からのユーザー localusers のサインインを許可し、グループ sshusers のメンバーも許可します。
AllowUsers localuser@192.168.2.23
AllowGroups sshusers
AuthenticationMethods
Windows OpenSSH の場合、使用できる認証方法は、password
と publickey
のみです。
重要
Microsoft Entra アカウントを使用する認証は、現在サポートされていません。
AuthorizedKeysFile
既定値は、.ssh/authorized_keys
です。 パスが絶対パスではない場合、ユーザーのホーム ディレクトリ (またはプロファイル イメージ パス) に対する相対パスと見なされます。たとえば、C:\Users\username となります。 ユーザーが管理者グループに属している場合、代わりに、%programdata%/ssh/administrators_authorized_keys が使用されます。
ヒント
administrators_authorized_keys ファイルには、NT Authority\SYSTEM アカウントと BUILTIN\Administrators セキュリティ グループのアクセス許可エントリのみを含める必要があります。 NT Authority\SYSTEM アカウントには、フル コントロールを付与する必要があります。 BUILTIN\Administrators セキュリティ グループは、管理者が承認されたキーを管理するために必要なグループであり、必要なアクセス権を選択できます。 アクセス許可を付与するには、PowerShell プロンプトを管理者特権で開き、コマンド icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
を実行します。
ChrootDirectory (v7.7.0.0 に追加されたサポート)
このディレクティブは、sftp セッションでのみサポートされます。 cmd.exe へのリモート セッションでは、ChrootDirectory
は考慮されません。 sftp 専用の chroot サーバーをセットアップするには、ForceCommand を internal-sftp に設定します。 scp と sftp だけを許可するカスタム シェルを実装することで、chroot を使用する scp をセットアップすることもできます。
GSSAPIAuthentication
GSSAPIAuthentication
構成引数は、GSSAPI ベースのユーザー認証を許可するかどうかを指定します。 GSSAPIAuthentication
の既定値は no です。
GSSAPI 認証では、OpenSSH クライアントを使用する場合にホスト名を指定する -K
スイッチを使用する必要があります。 または、SSH クライアント構成で対応するエントリを作成することもできます。 Windows では、OpenSSH クライアントは、既定で %userprofile%.ssh\config から構成データをお読み取ります。
GSSAPI OpenSSH クライアント構成の例を次に示します。
# Specify a set of configuration arguments for a host matching the pattern SERVER01.contoso.com
# Patterns are case sensitive
Host SERVER01.contoso.com
# Enables GSSAPI authentication
GSSAPIAuthentication yes
# Forward (delegate) credentials to the server.
GSSAPIDelegateCredentials yes
重要
GSSAPI は、Windows Server 2022、Windows 11、Windows 10 xxxx 以降でのみ使用できます。
HostKey
既定値は次のとおりです。
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
既定値がない場合、サービスの開始時に sshd によって自動的に生成されます。
一致したもの
条件の一致には、1 つ以上の条件が使用されます。 一致すると、それ以降の構成引数が適用されます。 一致では、「AllowGroups、AllowUsers、DenyGroups、DenyUsers」セクションで説明されているパターンが使用されます。 ユーザー名とグループ名は小文字にする必要があります。
PermitRootLogin
Windows では適用されません。 管理者のログインを防ぐには、DenyGroups ディレクティブで Administrators を使用します。
SyslogFacility
ファイルベースのログ記録が必要な場合は、LOCAL0 を使用します。 ログは、%programdata%\ssh\logs 下に生成されます。 既定値の AUTH を含むその他の値は、ETW にログが記録されます。 詳細については、Windows のログ機能に関する記事を参照してください。
構成引数
次の構成引数は、Windows Server 2022、Windows 11、Windows 10 xxxx 以降で使用できます。
- GSSAPIAuthentication
次の構成引数は、Windows Server および Windows クライアントに付属する OpenSSH バージョンでは使用できません。
- AcceptEnv
- AllowStreamLocalForwarding
- AuthorizedKeysCommand
- AuthorizedKeysCommandUser
- AuthorizedPrincipalsCommand
- AuthorizedPrincipalsCommandUser
- 圧縮
- ExposeAuthInfo
- GSSAPICleanupCredentials
- GSSAPIStrictAcceptorCheck
- HostbasedAcceptedKeyTypes
- HostbasedAuthentication
- HostbasedUsesNameFromPacketOnly
- IgnoreRhosts
- IgnoreUserKnownHosts
- KbdInteractiveAuthentication
- KerberosAuthentication
- KerberosGetAFSToken
- KerberosOrLocalPasswd
- KerberosTicketCleanup
- PermitTunnel
- PermitUserEnvironment
- PermitUserRC
- PidFile
- PrintLastLog
- PrintMotd
- RDomain
- StreamLocalBindMask
- StreamLocalBindUnlink
- StrictModes
- X11DisplayOffset
- X11Forwarding
- X11UseLocalhost
- XAuthLocation