Windows 10 1809 および Server 2019 用 OpenSSH Server 構成

このトピックでは、OpenSSH サーバー (sshd) の Windows 固有の構成について説明します。

OpenSSH では、構成オプションに関する詳細なドキュメントが OpenSSH.com でオンラインで管理されています。それらについては、このドキュメント セットでは繰り返しません。

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

既定のコマンド シェルでは、ユーザーが SSH を使用してサーバーに接続するときに表示されるエクスペリエンスが提供されます。 最初の既定の Windows は、Windows コマンド シェル (cmd.exe) です。 Windows には PowerShell と Bash も含まれています。サードパーティのコマンド シェルも Windows で使用でき、サーバーの既定のシェルとして構成できます。

既定のコマンド シェルを設定するには、まず、OpenSSH インストール フォルダーがシステム パスにあることを確認します。 Windows では、既定のインストール フォルダーは SystemDrive:WindowsDirectory\System32\openssh です。 次のコマンドによって現在のパス設定が表示され、それに既定の OpenSSH インストール フォルダーが追加されます。

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

既定の ssh シェルの構成は、シェルの実行可能ファイルへの完全なパス Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH を、Windows レジストリの文字列値 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 ドキュメントを参照してください。

AllowGroups、AllowUsers、DenyGroups、DenyUsers

サーバーに接続できるユーザーとグループの制御は、AllowGroups、AllowUsers、DenyGroups、および DenyUsers の各ディレクティブを使用して行います。 allow/deny ディレクティブは、次の順序で処理されます。DenyUsers、AllowUsers、DenyGroups、最後に AllowGroups。 すべてのアカウント名は、小文字で指定する必要があります。 ワイルドカードのパターンの詳細については、ssh_config の PATTERNS を参照してください。

ドメイン ユーザーまたはグループを使用してユーザー/グループ ベースの規則を構成する場合は、user?domain* の形式を使用します。 Windows では、ドメイン プリンシパルを指定するために複数の形式を使用できますが、標準の Linux パターンと競合するものが多数あります。 そのため、FQDN をカバーするために * が追加されています。 また、この方法では、@ の代わりに "?" を使用して、username@host 形式との競合を回避しています。

ワーク グループ users/groups とインターネットに接続されたアカウントは、常にローカルのアカウント名に解決されます (標準の Unix 名と同様に、ドメイン部分がありません)。 ドメイン ユーザーとグループは、NameSamCompatible 形式 (domain_short_name\user_name) に厳密に解決されます。 すべてのユーザー/グループ ベースの構成規則は、この形式に従う必要があります。

ドメイン ユーザーとグループの例

DenyUsers contoso\admin@192.168.2.23 : blocks contoso\admin from 192.168.2.23
DenyUsers contoso\* : blocks all users from contoso domain
AllowGroups contoso\sshusers : only allow users from contoso\sshusers group

ローカル ユーザーとグループの例

AllowUsers localuser@192.168.2.23
AllowGroups sshusers

AuthenticationMethods

Windows OpenSSH の場合、使用できる認証方法は "password" と "publickey" だけです。

AuthorizedKeysFile

既定値は ".ssh/authorized_keys .ssh/authorized_keys2" です。 パスが絶対パスでない場合は、ユーザーのホーム ディレクトリ (またはプロファイル イメージ パス) に対して相対的に取得されます。 例: c:\users\user ユーザーが管理者グループに属している場合は、%programdata%/ssh/administrators_authorized_keys が代わりに使用されることに注意してください。

ChrootDirectory (v7.7.0.0 に追加されたサポート)

このディレクティブは、sftp セッションでのみサポートされます。 cmd.exe へのリモート セッションでは、このようなことはできません。 sftp 専用の chroot サーバーをセットアップするには、ForceCommand を internal-sftp に設定します。 scp と sftp だけを許可するカスタム シェルを実装することで、chroot を使用する scp をセットアップすることもできます。

HostKey

既定値は %programdata%/ssh/ssh_host_ecdsa_key、%programdata%/ssh/ssh_host_ed25519_key、%programdata%/ssh/ssh_host_dsa_key、および %programdata%/ssh/ssh_host_rsa_key です。 既定値が存在しない場合は、サービスの開始時に sshd によってこれらが自動的に生成されます。

照合

このセクションのパターン規則に注意してください。 ユーザー名とグループ名は小文字にする必要があります。

PermitRootLogin

Windows では適用されません。 管理者のログインを防ぐには、DenyGroups ディレクティブで Administrators を使用します。

SyslogFacility

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

サポートされていません。

Windows Server 2019 および Windows 10 ビルド 1809 に付属する OpenSSH バージョンでは、次の構成オプションは使用できません。

  • AcceptEnv
  • AllowStreamLocalForwarding
  • AuthorizedKeysCommand
  • AuthorizedKeysCommandUser
  • AuthorizedPrincipalsCommand
  • AuthorizedPrincipalsCommandUser
  • 圧縮
  • ExposeAuthInfo
  • GSSAPIAuthentication
  • GSSAPICleanupCredentials
  • GSSAPIStrictAcceptorCheck
  • HostbasedAcceptedKeyTypes
  • HostbasedAuthentication
  • HostbasedUsesNameFromPacketOnly
  • IgnoreRhosts
  • IgnoreUserKnownHosts
  • KbdInteractiveAuthentication
  • KerberosAuthentication
  • KerberosGetAFSToken
  • KerberosOrLocalPasswd
  • KerberosTicketCleanup
  • PermitTunnel
  • PermitUserEnvironment
  • PermitUserRC
  • PidFile
  • PrintLastLog
  • RDomain
  • StreamLocalBindMask
  • StreamLocalBindUnlink
  • StrictModes
  • X11DisplayOffset
  • X11Forwarding
  • X11UseLocalhost
  • XAuthLocation