この記事では、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の手動ページを参照してください。
SSH サーバーを開く (sshd) は、既定で %programdata%\ssh\sshd_config から構成データを読み取ります。または、-f
パラメーターを指定してsshd.exe
を起動して別の構成ファイルを指定することもできます。 ファイルがない場合、sshd はサービスの開始時に既定の構成でファイルを生成します。
Windows では、OpenSSH クライアント (ssh) は構成ファイルから次の順序で構成データを読み取ります。
-F
パラメーターを使用してssh.exe
を起動し、構成ファイルへのパスとそのファイルのエントリ名を指定します。- \.ssh\config にあるユーザーの構成ファイル%userprofile%。
- \ssh\%programdata%ssh_config にあるシステム全体の構成ファイル。
Windows での OpenSSH 用の既定のシェルの構成
既定のコマンド シェルは、SSH を使用してサーバーに接続するときにユーザーに表示されるエクスペリエンスを提供します。 初期の既定の Windows は Windows コマンド シェル (cmd.exe) です。 Windows には PowerShell も含まれており、サード パーティ製のコマンド シェルは Windows でも使用でき、サーバーの既定のシェルとして構成される場合があります。
既定のコマンド シェルを設定するには、まず OpenSSH インストール フォルダーがシステム パスにあることを確認します。 Windows の場合、既定のインストール フォルダーは \Windows\System32\openssh%systemdrive% です。 次のコマンドは、現在のパス設定を示し、既定の OpenSSH インストール フォルダーを追加します。
コマンド シェル | 使用するコマンド |
---|---|
コマンド | path |
PowerShell | $env:path |
既定の SSH シェルの構成は、Windows レジストリで、文字列値 DefaultShell
の HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
にシェル実行可能ファイルへの完全なパスを追加することによって行われます。
たとえば、次の管理者特権の PowerShell コマンドは、既定のシェルを OpenSSH Server に powershell.exe
するように設定します (このパスの設定は OpenSSH クライアントには適用されません)。
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 ディレクティブを使用して行われます。 許可/拒否ディレクティブは、 DenyUsers、AllowUsers、 DenyGroups、最後に AllowGroups の順に処理 されます。 すべてのアカウント名は小文字で指定する必要があります。 ssh_configの PATTERNS とワイルドカードの詳細については、 sshd_config OpenBSD のマニュアル ページを参照してください。
ドメイン ユーザーまたはグループを使用してユーザー/グループ ベースのルールを構成する場合は、次の形式を使用します: user?domain*
。
Windows では、ドメイン プリンシパルを指定するための複数の形式を使用できますが、標準の Linux パターンと競合する可能性があります。
そのため、FQDN をカバーするために *
が追加されます。
また、この方法では、@
ではなく?
を使用して、username@host形式との競合を回避します。
作業グループのユーザー/グループとインターネットに接続されたアカウントは、常にローカル アカウント名に解決されます (標準の 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
次の例では、ユーザー localusers がホスト 192.168.2.23 からサインインし、グループ sshusers のメンバーを許可します。
AllowUsers localuser@192.168.2.23
AllowGroups sshusers
認証方法
Windows OpenSSH の場合、使用可能な認証方法は password
と publickey
のみです。
Von Bedeutung
Microsoft Entra アカウントを使用した認証は現在サポートされていません。
AuthorizedKeysFile
既定値は .ssh/authorized_keys
です。 パスが絶対パスでない場合は、ユーザーのホーム ディレクトリ (またはプロファイル イメージ パス) ( C:\Users\username など) に対して相対的に取得されます。 ユーザーが管理者グループに属している場合は、代わりに /ssh/administrators_authorized_keys%programdata% が使用されます。
ヒント
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 ベースのユーザー認証を許可するかどうかを指定します。 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 xxxx 以降でのみ使用できます。
ホストキー
既定値は次のとおりです。
#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 xxxx 以降では、次の構成引数を使用できます。
- GSSAPI認証 (GSSAPIAuthentication)
次の構成引数は、Windows Server および Windows クライアントに付属する OpenSSH バージョンでは使用できません。
- AcceptEnv
- AllowStreamLocalForwarding
- AuthorizedKeysCommand
- AuthorizedKeysCommandUser
- AuthorizedPrincipalsCommand
- AuthorizedPrincipalsCommandUser
- ExposeAuthInfo
- GSSAPICleanupCredentials
- GSSAPIStrictAcceptorCheck
- HostbasedAcceptedKeyTypes (ホストベース許可されたキータイプ)
- ホストベース認証
- HostbasedUsesNameFromPacketOnly
- IgnoreRhosts
- IgnoreUserKnownHosts
- KbdInteractiveAuthentication
- KerberosAuthentication
- KerberosGetAFSToken(ケルベロス・GetAFSトークン)
- Kerberosまたはローカルパスワード
- KerberosTicketCleanup
- PermitTunnel
- PermitUserEnvironment
- PermitUserRC
- PidFile
- 最後のログを印刷
- PrintMotd
- RDomain
- StreamLocalBindMask
- StreamLocalBindUnlink
- 厳格モード
- X11DisplayOffset
- X11Forwarding
- X11UseLocalhost
- XAuthLocation