次の方法で共有


Windows Server および Windows 用の OpenSSH Server の構成

この記事では、OpenSSH Server (sshd) の Windows 固有の構成について説明します。

OpenSSH では、OpenSSH.com の構成オプションに関する詳細なドキュメントがオンラインで保持 されます。 このドキュメント セットでは、このドキュメントは重複していません。

OpenSSH 構成ファイル

OpenSSH には、サーバー設定とクライアント設定の両方の構成ファイルがあります。 OpenSSH はオープンソースであり、Windows Server 2019 および Windows 10 (ビルド 1809) 以降の Windows Server および Windows クライアント オペレーティング システムに追加されました。 OpenSSH 構成ファイルのオープンソース ドキュメントは、ここでは繰り返されません。 クライアント構成ファイルは、 ssh_configの手動ページにあります。 OpenSSH サーバー構成ファイルは、 sshd_configの手動ページにあります。

OpenSSH サーバーは、既定で %programdata%\ssh\sshd_config から構成データを読み取ります。 sshd.exe パラメーターを使用して-fを実行することで、別の構成ファイルを指定できます。 ファイルがない場合、sshd はサービスの開始時に既定の構成でファイルを生成します。

Windows では、OpenSSH クライアント (ssh) は構成ファイルから次の順序で構成データを読み取ります。

  1. ssh.exe -Fパラメーターで開始し、構成ファイルへのパスと、そのファイルのエントリ名を指定します。
  2. %userprofile%\.ssh\configにあるユーザーの構成ファイルを使用します。
  3. %programdata%\ssh\ssh_configのシステム全体の構成ファイルを使用します。

Windows での OpenSSH 用の既定のシェルの構成

既定のコマンド シェルでは、SSH を使用してサーバーに接続するときにユーザーに表示されるエクスペリエンスが提供されます。 Windows の最初の既定値は、Windows コマンド プロンプト (cmd.exe) です。 Windows には PowerShell も含まれており、Microsoft 以外のコマンド シェルも Windows で使用でき、サーバーの既定のシェルとして構成される場合があります。

既定のコマンド シェルを設定するには、まず OpenSSH インストール フォルダーがシステム パスにあることを確認します。 Windows の場合、既定のインストール フォルダーは %systemdrive%\Windows\System32\openssh。 次のコマンドは、現在のパス設定を示し、既定の OpenSSH インストール フォルダーを追加します。

コマンド シェル 使用するコマンド
コマンド path
PowerShell $env:path

Windows レジストリで既定の ssh シェルを構成するには、形式HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSHの文字列値に、シェル実行可能ファイルの完全なパスをDefaultShellとして追加します。

次の管理者特権 PowerShell コマンドの例では、既定のシェルを OpenSSH Server に powershell.exe するように設定します。 (このパスの設定は OpenSSH クライアントには適用されません)。

$NewItemPropertyParams = @{
    Path         = "HKLM:\SOFTWARE\OpenSSH"
    Name         = "DefaultShell"
    Value        = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
    PropertyType = "String"
    Force        = $true
}
New-ItemProperty @NewItemPropertyParams

sshd_configでの Windows 構成

Windows では、sshd は既定で %programdata%\ssh\sshd_config から構成データを読み取ります。 sshd.exe パラメーターを使用して-fを実行することで、別の構成ファイルを指定できます。 ファイルがない場合、sshd はサービスの開始時に既定の構成でファイルを生成します。

次のセクションでは、sshd_configのエントリを使用して可能な Windows 固有の構成設定について説明します。 ここには記載されていない可能性のある他の構成設定があります。 これらは、 Win32 OpenSSH ドキュメントで詳しく説明されています。

ヒント

OpenSSH Server (sshd) は、サービスの開始時に構成ファイルを読み取ります。 構成ファイルを変更した場合は、サービスを再起動する必要があります。

AllowGroups、AllowUsers、DenyGroups、DenyUsers

AllowGroupsAllowUsersDenyGroups、およびDenyUsersディレクティブを使用して、サーバーに接続できるユーザーとグループを制御できます。 許可ディレクティブと拒否ディレクティブは、 DenyUsersAllowUsersDenyGroups、最後に AllowGroupsの順序で処理されます。

すべてのアカウント名は小文字で指定する必要があります。

ssh_configのパターンとワイルドカードの詳細については、 Sshd_config OpenBSD のマニュアル ページを参照してください。

ドメイン ユーザーまたはグループを使用してユーザー/グループベースのルールを構成する場合は、次の形式を使用します: user?___domain*

Windows では、ドメイン プリンシパルを指定するための複数の形式を使用できますが、標準の Linux パターンと競合する可能性があります。 そのため、 * は完全修飾ドメイン名 (FQDN) をカバーするために使用されます。 また、この方法では、?ではなく@を使用して、username@host形式との競合を回避します。

職場グループのユーザー、グループ、およびインターネットに接続されたアカウントは、常にローカル アカウント名に解決されます (標準の Unix 名に似たドメイン部分はありません)。 ドメイン ユーザーとグループは、NameSamCompatible 形式に厳密に解決されます。

すべてのユーザーおよびグループベースの構成規則は、この形式に従う必要があります。

次の例では、ホスト 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 からサインイン localuser し、グループのメンバーが sshusersできるようにします。

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

認証方法

Windows OpenSSH の場合、使用可能な認証方法は passwordpublickeyのみです。

Von Bedeutung

Microsoft Entra アカウントによる認証は現在サポートされていません。

AuthorizedKeysFile

既定値は .ssh/authorized_keysです。 絶対パスを指定しない場合、OpenSSH はホーム ディレクトリに対する相対ファイル ( 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 を設定することもできます。

GSSAPI認証

GSSAPIAuthentication構成引数は、GSSAPI (Kerberos) ベースのユーザー認証を許可するかどうかを指定します。 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

Von Bedeutung

GSSAPI は、Windows Server 2022、Windows 11、および Windows 10 (2021 年 5 月の更新プログラム) 以降でのみ使用できます。

ホストキー

既定値は次のとおりです。

#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 セクションで説明されているパターンルールが使用されます。 ユーザー名とグループ名は小文字にする必要があります。

ルートログイン許可

Windows では適用されません。 管理者がサインインできないようにするには、 DenyGroups ディレクティブで Administrators を使用します。

SyslogFacility

ファイル ベースのログ記録が必要な場合は、 LOCAL0を使用します。 ログは %programdata%\ssh\logsで生成されます。 既定値を含む他の値の場合、AUTH はログ記録を ETW に転送します。 詳細については、「 Windows のログ機能」を参照してください。

構成引数

Windows Server 2022、Windows 11、および Windows 10 (2021 年 5 月の更新プログラム) 以降では、次の構成引数を使用できます。

  • 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