sshd_config

OpenSSH サーバーを構成します: リスニング、認証、転送、アクセス制御、ロギング。

実行前の確認

サーバー設定はクライアント ssh_config とは異なります。パス、サポートされているオプション、およびデフォルトは、オペレーティング システムと OpenSSH のバージョンによって異なります。既存の管理セッションを開いたままにし、回復パスを利用できるようにします。変更を適用する前に、sshd -t で実際の構成を検証し、sshd -T で有効な設定を検査します。これらのコマンドには管理者権限が必要な場合があります。元のセッションを閉じる前に、2 回目のログインを確認してください。サンプルの値をむやみにコピーしないでください。

変更を適用したら、新しい SSH セッションでログインと期待する動作を確認してください。確認が成功するまで現在のセッションを開いたままにしておくと、必要に応じて設定を復旧できます。

使用例

サーバー構成の例。認証、パス、アクセス ルールを環境に適応させます。

Port 22
PermitRootLogin no
PubkeyAuthentication yes
AllowTcpForwarding yes

変更を適用する前に、構文を検証し、有効なサーバー設定を検査します。

sudo sshd -t
sudo sshd -T

オプションと使用例

Portよく使う

リスニング TCP ポート。複数の Port ディレクティブが許可されます。ファイアウォールとクライアントが選択したポートを許可していることを確認してください。

使用例
Port 2222
ListenAddressよく使う

sshd がリッスンするローカル アドレス。アドレスにはポートを含めることができます。サーバー上に存在することを確認してください。

使用例
ListenAddress 192.0.2.10
AddressFamily

アドレス ファミリを選択します: any、IPv4 の場合は inet、IPv6 の場合は inet6。

使用例
AddressFamily inet
HostKeyよく使う

サーバーのプライベートホストキーへのパス。これはユーザーの認証キーではありません。プライベートファイルを保護します。

使用例
HostKey /etc/ssh/ssh_host_ed25519_key
HostCertificate

構成されたホストキーと一致するサーバーホスト証明書へのパス。

使用例
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
PasswordAuthenticationよく使う

パスワード認証を許可または拒否します。パスワード認証を無効にする前に、別のログイン方法を確認してください。

使用例
PasswordAuthentication no
PubkeyAuthenticationよく使う

公開キー認証を許可または拒否します。サーバー権限と承認されたキーは引き続き適用されます。

使用例
PubkeyAuthentication yes
KbdInteractiveAuthenticationよく使う

キーボード対話型認証を許可します。プロンプトと使用可能な方法は、サーバーと認証バックエンドによって異なります。

使用例
KbdInteractiveAuthentication yes
AuthenticationMethodsよく使う

スペースで区切られたメソッド リストのいずれかが必要です。リスト内のカンマで区切られたすべてのメソッドは成功する必要があります。各メソッドも有効にする必要があります。

使用例
AuthenticationMethods publickey,keyboard-interactive
PermitRootLoginよく使う

root ログインを制御します。値は yes、prohibit-password、forced-commands-only、no です。変更前に別の管理者ログインを確認してください。

使用例
PermitRootLogin no
PermitEmptyPasswords

空のパスワードを持つアカウントがパスワード認証を使用して認証できるようにします。これを有効にすると安全ではありません。

使用例
PermitEmptyPasswords no
AuthorizedKeysFileよく使う

承認された公開キーを含むファイルへのパス。相対パスはユーザーのホーム ディレクトリから解決されます。トークンがサポートされています。

使用例
AuthorizedKeysFile .ssh/authorized_keys
StrictModesよく使う

ログインを受け入れる前に、ユーザー ファイルとホーム ディレクトリの所有権と権限を確認してください。

使用例
StrictModes yes
AllowUsersよく使う

リストされたユーザー名パターンのみを許可します。 USER@HOST パターンは原点を制限できます。アカウントへのアクセスには他の制限も適用されます。

使用例
AllowUsers alice bob
DenyUsers

一致するユーザー名パターンを拒否します。拒否ルールは、対応する許可ルールよりも優先されます。

使用例
DenyUsers guest
AllowGroups

他のアクセス ルールに従って、一致する名前付きグループ内のユーザーのみを許可します。

使用例
AllowGroups sshusers
DenyGroups

一致する名前付きグループ内のユーザーを拒否します。数値 ID ではなく、グループ名が使用されます。

使用例
DenyGroups restricted
AllowTcpForwardingよく使う

TCP 転送の制御: はいまたはすべて、いいえ、ローカルまたはリモート。これだけでは、無制限のシェル アクセスを持つユーザーによる転送を防ぐことはできません。

使用例
AllowTcpForwarding local
DisableForwarding

転送機能を無効にして、他の転送設定をオーバーライドします。これにより、トンネルやエージェントまたは X11 転送が中断される可能性があります。

使用例
DisableForwarding yes
GatewayPortsよく使う

リモート転送のバインド アドレスを制御します。no はループバックをバインドし、yes はワイルドカードをバインドし、clientspecified はクライアントが選択したアドレスを許可します。ポートを公開するとセキュリティに影響します。

使用例
GatewayPorts no
PermitOpen

ローカル TCP 転送の宛先を制限します。 host:port エントリ、任意、またはなしを使用します。名前は照合のために解決されません。

使用例
PermitOpen db.example.com:5432
PermitListen

リモート転送のリスニング アドレスとポートを制限します。 GatewayPorts もバインディングに影響します。

使用例
PermitListen localhost:18080
AllowAgentForwarding

SSH 認証エージェント転送を許可します。エージェント ソケットにアクセスできるリモート プロセスは、署名を要求できます。

使用例
AllowAgentForwarding no
AllowStreamLocalForwarding

Unix ドメインのソケット転送を制御します: はいまたはすべて、いいえ、ローカルまたはリモート。

使用例
AllowStreamLocalForwarding no
X11Forwarding

X11 ディスプレイ転送を有効にします。必要な場合にのみ有効にし、リモート ディスプレイ アクセスのリスクを理解してください。

使用例
X11Forwarding no
MaxAuthTriesよく使う

切断するまでの接続ごとの認証試行の最大数。サーバーは失敗をより早くログに記録する場合があります。

使用例
MaxAuthTries 4
MaxSessionsよく使う

SSH 接続あたりの最大シェル、ログイン、またはサブシステム セッション。ゼロを設定するとセッションは禁止されますが、転送は許可される可能性があります。

使用例
MaxSessions 10
MaxStartupsよく使う

認証されていない接続を制限します。 start:rate:full 形式は、負荷がかかると接続を段階的に拒否します。

使用例
MaxStartups 10:30:100
LoginGraceTimeよく使う

認証に許可される時間。期間がゼロの場合は、時間制限がないことを意味します。

使用例
LoginGraceTime 60s
ClientAliveIntervalよく使う

暗号化された SSH レベルのクライアントアライブ プローブの間隔 (秒単位)。ゼロを指定すると、これらのプローブが無効になります。

使用例
ClientAliveInterval 30
ClientAliveCountMaxよく使う

切断するまでに許容される未応答の SSH レベルのクライアント アライブ プローブの数。 ClientAliveInterval とともに使用します。

使用例
ClientAliveCountMax 3
TCPKeepAlive

TCP キープアライブ メッセージを制御します。これらは、暗号化された SSH クライアントアライブ プローブとは別のものです。

使用例
TCPKeepAlive yes
UsePAMよく使う

PAM 統合をサポートするビルドで PAM 統合を有効にします。 PAM ポリシーと利用可能な認証方法はシステムによって異なります。

使用例
UsePAM yes
PermitTTY

擬似端末の割り当てを許可します。これを無効にすると、対話型セッションに影響します。

使用例
PermitTTY yes
ForceCommand

要求されたコマンドを固定コマンドに置き換えます。有効にする前に、アクセスと制限を慎重に検証してください。

使用例
ForceCommand internal-sftp
Subsystemよく使う

名前付きサブシステムとそのコマンドを定義します。 Internal-sftp は組み込みの SFTP サーバーです。

使用例
Subsystem sftp internal-sftp
ChrootDirectory

認証後にセッションをディレクトリに制限します。ディレクトリの所有権と権限は厳密にチェックされます。目的のセッションに必要なファイルをプロビジョニングします。

使用例
ChrootDirectory /srv/sftp/%u
Matchよく使う

ユーザー、グループ、アドレス、またはその他のサポートされている基準に一致する条件ブロックを開始します。内部では特定のディレクティブのみが許可されます。

使用例
Match User sftpuser
    ForceCommand internal-sftp
Includeよく使う

パスまたはグロブごとに構成ファイルを含めます。通常は最初に取得した値が適用されるため、順序は重要です。

使用例
Include /etc/ssh/sshd_config.d/*.conf
LogLevelよく使う

QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG などのログの詳細度を設定します。詳細なログにより機密情報が公開される可能性があります。

使用例
LogLevel INFO
SyslogFacility

SSH サーバー メッセージに使用される syslog 機能を選択します。システムのロギング設定によって、それらがどこに表示されるかが決まります。

使用例
SyslogFacility AUTH
Banner

認証前に指定したファイルの内容を送信します。設定されたバナーを無効にするには、none を使用します。

使用例
Banner /etc/issue.net
AcceptEnv

クライアントが指定した名前付き環境変数を許可します。一部の変数は制限された環境をバイパスできるため、必要なものだけを許可します。

使用例
AcceptEnv LANG LC_*
PermitUserEnvironment

ユーザー指定の環境設定を制御します。これらを有効にすると、環境変数による制限を回避できます。

使用例
PermitUserEnvironment no
PrintMotd

sshd が対話型ログイン時にその日のメッセージを出力するかどうかを制御します。 PAM または別のサービスで印刷することもできます。

使用例
PrintMotd no
Compression

圧縮を制御します。サポートされる値とタイミングは OpenSSH バージョンによって異なります。

使用例
Compression no
RekeyLimit

データしきい値を設定し、オプションでキー再生成の時間間隔を設定します。サーバーのバージョンに適した値を使用してください。

使用例
RekeyLimit 1G 1h
Ciphers

許可された暗号化アルゴリズムを選択します。デフォルトのリストを置き換えると、互換性が低下する可能性があります。 ssh -Q cipher を使用して、クライアントがサポートするアルゴリズムを検査します。

使用例
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.com
KexAlgorithms

鍵交換アルゴリズムを選択します。このリストを制限すると、クライアントが破損する可能性があります。両側でのサポートを確認します。

使用例
KexAlgorithms curve25519-sha256
PubkeyAcceptedAlgorithms

ユーザー認証用に許可された公開キー署名アルゴリズムを選択します。デフォルトのリストを変更する前に互換性を確認してください。

使用例
PubkeyAcceptedAlgorithms ssh-ed25519
HostKeyAlgorithms

サーバーが提供するホストキー署名アルゴリズムを選択します。構成されたホスト キーは、選択したアルゴリズムをサポートする必要があります。

使用例
HostKeyAlgorithms ssh-ed25519
TrustedUserCAKeys

証明書認証用の信頼されたユーザー認証局の公開キーを含むファイル。

使用例
TrustedUserCAKeys /etc/ssh/user_ca.pub
RevokedKeys

取り消された公開キーまたはキー取り消しリストを含むファイル。構成ファイルが欠落しているか読み取り不能であると、公開キー認証が妨げられる可能性があります。

使用例
RevokedKeys /etc/ssh/revoked_keys
AuthorizedPrincipalsFile

信頼された CA によって署名されたユーザー証明書に許可されたプリンシパルをリストしたファイル。トークンの拡張がサポートされています。

使用例
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%u
VersionAddendum

SSH プロトコル バナーにテキストを追加します。 none は追加されたテキストを無効にします。

使用例
VersionAddendum none
AuthorizedKeysCommand

信頼できるルート所有のプログラムを実行して公開キーを取得します。実行アカウントを設定し、マニュアルの所有権要件に従います。

使用例
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %u
AuthorizedKeysCommandUser

AuthorizedKeysCommand の実行に使用されるアカウント。専用のアカウントをお勧めします。

使用例
AuthorizedKeysCommandUser sshkeys
AuthorizedPrincipalsCommand

信頼できるプログラムを実行して、許可された証明書プリンシパルを取得します。実行アカウントを個別に構成します。

使用例
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %u
AuthorizedPrincipalsCommandUser

AuthorizedPrincipalsCommand の実行に使用されるアカウント。専用のアカウントを使用します。

使用例
AuthorizedPrincipalsCommandUser sshprincipals
CASignatureAlgorithms

SSH 証明書に受け入れられる認証局の署名アルゴリズムを制限します。変更前に CA とクライアントの互換性を確認してください。

使用例
CASignatureAlgorithms ssh-ed25519
ChannelTimeout

チャネルの種類と期間に基づいて、非アクティブなチャネルを期限切れにします。可用性とサポートされるチャネル タイプはバージョンによって異なります。期限切れによって SSH 接続を終了する必要はありません。

使用例
ChannelTimeout session=1h
ExposeAuthInfo

SSH_USER_AUTH によって参照される一時ファイルを通じて認証情報を公開します。認証の詳細へのアクセスを考慮してください。

使用例
ExposeAuthInfo no
FingerprintHash

sha256 や md5 など、キーのフィンガープリントに使用されるハッシュを選択します。 SHA-256 を推奨します。

使用例
FingerprintHash sha256
GSSAPIAuthentication

サーバー ビルドでサポートされている場合は、GSSAPI ユーザー認証を制御します。

使用例
GSSAPIAuthentication no
GSSAPICleanupCredentials

委任された GSSAPI 資格情報をログアウト時に破棄するかどうかを制御します。ビルドのサポートは異なります。

使用例
GSSAPICleanupCredentials yes
GSSAPIDelegateCredentials

サポートされている場合、ユーザー セッションの委任された GSSAPI 認証情報の保存を制御します。

使用例
GSSAPIDelegateCredentials no
GSSAPIStrictAcceptorCheck

サーバーが正しい GSSAPI ホスト ID を必要とするかどうかを制御します。検証を無効にすると、セキュリティに影響します。

使用例
GSSAPIStrictAcceptorCheck yes
HostbasedAcceptedAlgorithms

ホストベースの認証に受け入れられるアルゴリズムを選択します。可用性は OpenSSH バージョンによって異なります。

使用例
HostbasedAcceptedAlgorithms ssh-ed25519
HostbasedAuthentication

ホストベースの認証を制御します。追加の信頼とホスト構成が必要です。

使用例
HostbasedAuthentication no
HostbasedUsesNameFromPacketOnly

ホストベースの認証で DNS の代わりにクライアントによって提供された名前を使用するかどうかを制御します。信頼への影響を確認します。

使用例
HostbasedUsesNameFromPacketOnly no
HostKeyAgent

ホスト秘密キーへのアクセスに使用するエージェント ソケットを指定します。エージェントとそのソケットは sshd で使用できる必要があります。

使用例
HostKeyAgent /run/ssh-hostkey-agent.sock
IgnoreRhosts

ホストベースの認証のためのユーザーごとの rhosts または shosts ファイルの使用を制御します。受け入れられる値はバージョンによって異なります。

使用例
IgnoreRhosts yes
IgnoreUserKnownHosts

ホストベースの認証中にユーザー固有の known_hosts ファイルを無視するかどうかを制御します。

使用例
IgnoreUserKnownHosts yes
KerberosAuthentication

Kerberos サポートを使用して構築および構成されている場合は、Kerberos パスワード認証を制御します。

使用例
KerberosAuthentication no
KerberosGetAFSToken

ビルドがサポートしている場合、Kerberos 認証されたユーザーの AFS トークンの取得を制御します。

使用例
KerberosGetAFSToken no
KerberosOrLocalPasswd

失敗した Kerberos パスワード検証をローカル パスワード認証にフォールバックするかどうかを制御します。

使用例
KerberosOrLocalPasswd no
KerberosTicketCleanup

サポートされている場合、ログアウト時のユーザーの Kerberos チケット キャッシュの削除を制御します。

使用例
KerberosTicketCleanup yes
LogVerbose

一致するソースの場所のログの詳細度をオーバーライドします。これはトラブルシューティングを目的としており、機密情報が公開される可能性があります。

使用例
LogVerbose kex.c:*:1000
ModuliFile

Diffie-Hellman グループ交換に使用されるモジュライ ファイルへのパス。プラットフォームのガイダンスに従ってメンテナンスしてください。

使用例
ModuliFile /etc/ssh/moduli
PAMServiceName

このディレクティブをサポートするビルドで PAM サービス名を選択します。選択したサービスの PAM ポリシーが存在する必要があります。

使用例
PAMServiceName sshd
PermitTunnel

デバイス転送の制御: はい、ポイントツーポイント、イーサネット、またはいいえ。追加のシステム権限と構成が必要になる場合があります。

使用例
PermitTunnel no
PermitUserRC

ユーザーの SSH rc ファイルの実行を制御します。これを無効にすると、ユーザー セッションのセットアップに影響する可能性があります。

使用例
PermitUserRC no
PerSourceMaxStartups

送信元アドレスまたは送信元グループごとに同時非認証接続を制限します。サポートされるバージョンは異なります。

使用例
PerSourceMaxStartups 10
PerSourceNetBlockSize

ソースごとの接続制限のソースをグループ化するために使用される IPv4 および IPv6 プレフィックス長を設定します。

使用例
PerSourceNetBlockSize 32:128
PerSourcePenalties

問題のあるソースに対するペナルティを設定します。サポートされるペナルティのタイプ、値、およびデフォルトは、OpenSSH バージョンによって異なります。

使用例
PerSourcePenalties no
PerSourcePenaltyExemptList

ソースごとのペナルティから免除されるソース アドレスまたは CIDR 範囲をリストします。免除の範囲が狭いことを確認します。

使用例
PerSourcePenaltyExemptList 192.0.2.0/24
PidFile

サーバープロセスIDファイルへのパス。サービス マネージャーと権限がこのパスに一致していることを確認してください。

使用例
PidFile /run/sshd.pid
PrintLastLog

対話型ログインの前回のログイン時刻の出力を制御します。可用性はプラットフォームのサポートによって異なる場合があります。

使用例
PrintLastLog yes
PubkeyAuthOptions

セキュリティ キー タッチや検証要件 (サポートされている場合) を含む、公開キー認証オプションを設定します。

使用例
PubkeyAuthOptions touch-required
RefuseConnection

通常は Match ブロック内で接続を拒否します。利用可能かどうかはバージョンによって異なります。

使用例
Match User blocked
    RefuseConnection yes
RequiredRSASize

sshd が受け入れる最小の RSA キー サイズを設定します。値を小さくするとセキュリティが弱くなる可能性があり、バージョンによっては最小値が課される場合があります。

使用例
RequiredRSASize 3072
RDomain

ルーティング ドメインをサポートするプラットフォームでセッションのルーティング ドメインを選択します。これはプラットフォーム固有です。

使用例
RDomain 1
SecurityKeyProvider

FIDO セキュリティ キー ミドルウェア ライブラリへのパス。未設定のままにすると、利用可能な場合は組み込みサポートが使用されます。

使用例
SecurityKeyProvider /usr/local/lib/libsk-libfido2.so
SshdAuthPath

sshd 認証ヘルパーをサポートするバージョンおよびプラットフォーム上の sshd 認証ヘルパーへのパス。通常はパッケージによって管理されます。

使用例
SshdAuthPath /usr/libexec/sshd-auth
SshdSessionPath

sshd セッション ヘルパーをサポートするバージョンおよびプラットフォーム上の sshd セッション ヘルパーへのパス。通常はパッケージによって管理されます。

使用例
SshdSessionPath /usr/libexec/sshd-session
StreamLocalBindMask

Unix ドメイン転送ソケットの 8 進ファイル モード作成マスクを設定します。

使用例
StreamLocalBindMask 0177
StreamLocalBindUnlink

転送リスナーを作成する前に、既存の Unix ドメイン ソケットを削除するかどうかを制御します。

使用例
StreamLocalBindUnlink no
UnusedConnectionTimeout

指定した時間が経過すると、開いているチャネルがない接続を閉じます。影響を受ける動作と可用性はバージョンによって異なります。

使用例
UnusedConnectionTimeout 5m
X11DisplayOffset

X11 転送に使用できる最初のディスプレイ番号を設定します。

使用例
X11DisplayOffset 10
X11UseLocalhost

有効な場合は、X11 転送サーバーをループバックにバインドします。これを無効にすると、ディスプレイがより広範囲に公開される可能性があります。

使用例
X11UseLocalhost yes
XAuthLocation

該当する場合、X11 転送に使用される xauth プログラムへのパス。

使用例
XAuthLocation /usr/bin/xauth
IPQoS

対話型セッションと非対話型セッションの IP サービス品質マーキングを設定します。ネットワーク デバイスは、これらのマーキングを解釈または無視する場合があります。

使用例
IPQoS lowdelay throughput
MACs

メッセージ認証コードのアルゴリズムを選択します。デフォルトを変更すると、セキュリティとクライアントの互換性に影響を与える可能性があります。

使用例
MACs hmac-sha2-256-etm@openssh.com
SetEnv

子セッションの環境変数を設定します。これらの値は、クライアントまたはユーザー環境ファイルから受け入れられた変数をオーバーライドします。

使用例
SetEnv LANG=en_US.UTF-8
UseDNS

接続クライアントの逆引き DNS ルックアップと検証を制御します。 DNS が遅い場合、これを有効にすると遅延が追加される可能性があります。

使用例
UseDNS no

推奨する初期設定

公開鍵ログインが確認済みで、キーボード対話認証が不要なサーバー向けです。認証済みユーザーは TCP 転送を利用でき、リモート転送の待受先はループバックに限定されます。

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
AllowTcpForwarding yes
GatewayPorts no

パスワード認証とキーボード対話認証を無効にします。後者には PAM やワンタイムコードが含まれる場合があります。先に別の管理者アカウントと鍵でログインできることを確認してください。AllowTcpForwarding yes は認証済みユーザーに転送を許可するため、必要に応じてアクセスを制限してください。

現在のセッションと復旧手段を確保し、既存設定に統合してください。Include の順序、先行する値、Match ブロックが結果に影響します。sshd -t と sshd -T で確認し、Match 条件には sshd -T -C を使用します。システムの手順で適用後、別のログインを確認してから元のセッションを閉じてください。

公式リファレンス

確認日:2026年10月27日