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 2222ListenAddressよく使うsshd がリッスンするローカル アドレス。アドレスにはポートを含めることができます。サーバー上に存在することを確認してください。
ListenAddress 192.0.2.10AddressFamilyアドレス ファミリを選択します: any、IPv4 の場合は inet、IPv6 の場合は inet6。
AddressFamily inetHostKeyよく使うサーバーのプライベートホストキーへのパス。これはユーザーの認証キーではありません。プライベートファイルを保護します。
HostKey /etc/ssh/ssh_host_ed25519_keyHostCertificate構成されたホストキーと一致するサーバーホスト証明書へのパス。
HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pubPasswordAuthenticationよく使うパスワード認証を許可または拒否します。パスワード認証を無効にする前に、別のログイン方法を確認してください。
PasswordAuthentication noPubkeyAuthenticationよく使う公開キー認証を許可または拒否します。サーバー権限と承認されたキーは引き続き適用されます。
PubkeyAuthentication yesKbdInteractiveAuthenticationよく使うキーボード対話型認証を許可します。プロンプトと使用可能な方法は、サーバーと認証バックエンドによって異なります。
KbdInteractiveAuthentication yesAuthenticationMethodsよく使うスペースで区切られたメソッド リストのいずれかが必要です。リスト内のカンマで区切られたすべてのメソッドは成功する必要があります。各メソッドも有効にする必要があります。
AuthenticationMethods publickey,keyboard-interactivePermitRootLoginよく使うroot ログインを制御します。値は yes、prohibit-password、forced-commands-only、no です。変更前に別の管理者ログインを確認してください。
PermitRootLogin noPermitEmptyPasswords空のパスワードを持つアカウントがパスワード認証を使用して認証できるようにします。これを有効にすると安全ではありません。
PermitEmptyPasswords noAuthorizedKeysFileよく使う承認された公開キーを含むファイルへのパス。相対パスはユーザーのホーム ディレクトリから解決されます。トークンがサポートされています。
AuthorizedKeysFile .ssh/authorized_keysStrictModesよく使うログインを受け入れる前に、ユーザー ファイルとホーム ディレクトリの所有権と権限を確認してください。
StrictModes yesAllowUsersよく使うリストされたユーザー名パターンのみを許可します。 USER@HOST パターンは原点を制限できます。アカウントへのアクセスには他の制限も適用されます。
AllowUsers alice bobDenyUsers一致するユーザー名パターンを拒否します。拒否ルールは、対応する許可ルールよりも優先されます。
DenyUsers guestAllowGroups他のアクセス ルールに従って、一致する名前付きグループ内のユーザーのみを許可します。
AllowGroups sshusersDenyGroups一致する名前付きグループ内のユーザーを拒否します。数値 ID ではなく、グループ名が使用されます。
DenyGroups restrictedAllowTcpForwardingよく使うTCP 転送の制御: はいまたはすべて、いいえ、ローカルまたはリモート。これだけでは、無制限のシェル アクセスを持つユーザーによる転送を防ぐことはできません。
AllowTcpForwarding localDisableForwarding転送機能を無効にして、他の転送設定をオーバーライドします。これにより、トンネルやエージェントまたは X11 転送が中断される可能性があります。
DisableForwarding yesGatewayPortsよく使うリモート転送のバインド アドレスを制御します。no はループバックをバインドし、yes はワイルドカードをバインドし、clientspecified はクライアントが選択したアドレスを許可します。ポートを公開するとセキュリティに影響します。
GatewayPorts noPermitOpenローカル TCP 転送の宛先を制限します。 host:port エントリ、任意、またはなしを使用します。名前は照合のために解決されません。
PermitOpen db.example.com:5432PermitListenリモート転送のリスニング アドレスとポートを制限します。 GatewayPorts もバインディングに影響します。
PermitListen localhost:18080AllowAgentForwardingSSH 認証エージェント転送を許可します。エージェント ソケットにアクセスできるリモート プロセスは、署名を要求できます。
AllowAgentForwarding noAllowStreamLocalForwardingUnix ドメインのソケット転送を制御します: はいまたはすべて、いいえ、ローカルまたはリモート。
AllowStreamLocalForwarding noX11ForwardingX11 ディスプレイ転送を有効にします。必要な場合にのみ有効にし、リモート ディスプレイ アクセスのリスクを理解してください。
X11Forwarding noMaxAuthTriesよく使う切断するまでの接続ごとの認証試行の最大数。サーバーは失敗をより早くログに記録する場合があります。
MaxAuthTries 4MaxSessionsよく使うSSH 接続あたりの最大シェル、ログイン、またはサブシステム セッション。ゼロを設定するとセッションは禁止されますが、転送は許可される可能性があります。
MaxSessions 10MaxStartupsよく使う認証されていない接続を制限します。 start:rate:full 形式は、負荷がかかると接続を段階的に拒否します。
MaxStartups 10:30:100LoginGraceTimeよく使う認証に許可される時間。期間がゼロの場合は、時間制限がないことを意味します。
LoginGraceTime 60sClientAliveIntervalよく使う暗号化された SSH レベルのクライアントアライブ プローブの間隔 (秒単位)。ゼロを指定すると、これらのプローブが無効になります。
ClientAliveInterval 30ClientAliveCountMaxよく使う切断するまでに許容される未応答の SSH レベルのクライアント アライブ プローブの数。 ClientAliveInterval とともに使用します。
ClientAliveCountMax 3TCPKeepAliveTCP キープアライブ メッセージを制御します。これらは、暗号化された SSH クライアントアライブ プローブとは別のものです。
TCPKeepAlive yesUsePAMよく使うPAM 統合をサポートするビルドで PAM 統合を有効にします。 PAM ポリシーと利用可能な認証方法はシステムによって異なります。
UsePAM yesPermitTTY擬似端末の割り当てを許可します。これを無効にすると、対話型セッションに影響します。
PermitTTY yesForceCommand要求されたコマンドを固定コマンドに置き換えます。有効にする前に、アクセスと制限を慎重に検証してください。
ForceCommand internal-sftpSubsystemよく使う名前付きサブシステムとそのコマンドを定義します。 Internal-sftp は組み込みの SFTP サーバーです。
Subsystem sftp internal-sftpChrootDirectory認証後にセッションをディレクトリに制限します。ディレクトリの所有権と権限は厳密にチェックされます。目的のセッションに必要なファイルをプロビジョニングします。
ChrootDirectory /srv/sftp/%uMatchよく使うユーザー、グループ、アドレス、またはその他のサポートされている基準に一致する条件ブロックを開始します。内部では特定のディレクティブのみが許可されます。
Match User sftpuser
ForceCommand internal-sftpIncludeよく使うパスまたはグロブごとに構成ファイルを含めます。通常は最初に取得した値が適用されるため、順序は重要です。
Include /etc/ssh/sshd_config.d/*.confLogLevelよく使うQUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG などのログの詳細度を設定します。詳細なログにより機密情報が公開される可能性があります。
LogLevel INFOSyslogFacilitySSH サーバー メッセージに使用される syslog 機能を選択します。システムのロギング設定によって、それらがどこに表示されるかが決まります。
SyslogFacility AUTHBanner認証前に指定したファイルの内容を送信します。設定されたバナーを無効にするには、none を使用します。
Banner /etc/issue.netAcceptEnvクライアントが指定した名前付き環境変数を許可します。一部の変数は制限された環境をバイパスできるため、必要なものだけを許可します。
AcceptEnv LANG LC_*PermitUserEnvironmentユーザー指定の環境設定を制御します。これらを有効にすると、環境変数による制限を回避できます。
PermitUserEnvironment noPrintMotdsshd が対話型ログイン時にその日のメッセージを出力するかどうかを制御します。 PAM または別のサービスで印刷することもできます。
PrintMotd noCompression圧縮を制御します。サポートされる値とタイミングは OpenSSH バージョンによって異なります。
Compression noRekeyLimitデータしきい値を設定し、オプションでキー再生成の時間間隔を設定します。サーバーのバージョンに適した値を使用してください。
RekeyLimit 1G 1hCiphers許可された暗号化アルゴリズムを選択します。デフォルトのリストを置き換えると、互換性が低下する可能性があります。 ssh -Q cipher を使用して、クライアントがサポートするアルゴリズムを検査します。
Ciphers aes256-gcm@openssh.com,aes128-gcm@openssh.comKexAlgorithms鍵交換アルゴリズムを選択します。このリストを制限すると、クライアントが破損する可能性があります。両側でのサポートを確認します。
KexAlgorithms curve25519-sha256PubkeyAcceptedAlgorithmsユーザー認証用に許可された公開キー署名アルゴリズムを選択します。デフォルトのリストを変更する前に互換性を確認してください。
PubkeyAcceptedAlgorithms ssh-ed25519HostKeyAlgorithmsサーバーが提供するホストキー署名アルゴリズムを選択します。構成されたホスト キーは、選択したアルゴリズムをサポートする必要があります。
HostKeyAlgorithms ssh-ed25519TrustedUserCAKeys証明書認証用の信頼されたユーザー認証局の公開キーを含むファイル。
TrustedUserCAKeys /etc/ssh/user_ca.pubRevokedKeys取り消された公開キーまたはキー取り消しリストを含むファイル。構成ファイルが欠落しているか読み取り不能であると、公開キー認証が妨げられる可能性があります。
RevokedKeys /etc/ssh/revoked_keysAuthorizedPrincipalsFile信頼された CA によって署名されたユーザー証明書に許可されたプリンシパルをリストしたファイル。トークンの拡張がサポートされています。
AuthorizedPrincipalsFile /etc/ssh/auth_principals/%uVersionAddendumSSH プロトコル バナーにテキストを追加します。 none は追加されたテキストを無効にします。
VersionAddendum noneAuthorizedKeysCommand信頼できるルート所有のプログラムを実行して公開キーを取得します。実行アカウントを設定し、マニュアルの所有権要件に従います。
AuthorizedKeysCommand /usr/local/libexec/ssh-keys %uAuthorizedKeysCommandUserAuthorizedKeysCommand の実行に使用されるアカウント。専用のアカウントをお勧めします。
AuthorizedKeysCommandUser sshkeysAuthorizedPrincipalsCommand信頼できるプログラムを実行して、許可された証明書プリンシパルを取得します。実行アカウントを個別に構成します。
AuthorizedPrincipalsCommand /usr/local/libexec/ssh-principals %uAuthorizedPrincipalsCommandUserAuthorizedPrincipalsCommand の実行に使用されるアカウント。専用のアカウントを使用します。
AuthorizedPrincipalsCommandUser sshprincipalsCASignatureAlgorithmsSSH 証明書に受け入れられる認証局の署名アルゴリズムを制限します。変更前に CA とクライアントの互換性を確認してください。
CASignatureAlgorithms ssh-ed25519ChannelTimeoutチャネルの種類と期間に基づいて、非アクティブなチャネルを期限切れにします。可用性とサポートされるチャネル タイプはバージョンによって異なります。期限切れによって SSH 接続を終了する必要はありません。
ChannelTimeout session=1hExposeAuthInfoSSH_USER_AUTH によって参照される一時ファイルを通じて認証情報を公開します。認証の詳細へのアクセスを考慮してください。
ExposeAuthInfo noFingerprintHashsha256 や md5 など、キーのフィンガープリントに使用されるハッシュを選択します。 SHA-256 を推奨します。
FingerprintHash sha256GSSAPIAuthenticationサーバー ビルドでサポートされている場合は、GSSAPI ユーザー認証を制御します。
GSSAPIAuthentication noGSSAPICleanupCredentials委任された GSSAPI 資格情報をログアウト時に破棄するかどうかを制御します。ビルドのサポートは異なります。
GSSAPICleanupCredentials yesGSSAPIDelegateCredentialsサポートされている場合、ユーザー セッションの委任された GSSAPI 認証情報の保存を制御します。
GSSAPIDelegateCredentials noGSSAPIStrictAcceptorCheckサーバーが正しい GSSAPI ホスト ID を必要とするかどうかを制御します。検証を無効にすると、セキュリティに影響します。
GSSAPIStrictAcceptorCheck yesHostbasedAcceptedAlgorithmsホストベースの認証に受け入れられるアルゴリズムを選択します。可用性は OpenSSH バージョンによって異なります。
HostbasedAcceptedAlgorithms ssh-ed25519HostbasedAuthenticationホストベースの認証を制御します。追加の信頼とホスト構成が必要です。
HostbasedAuthentication noHostbasedUsesNameFromPacketOnlyホストベースの認証で DNS の代わりにクライアントによって提供された名前を使用するかどうかを制御します。信頼への影響を確認します。
HostbasedUsesNameFromPacketOnly noHostKeyAgentホスト秘密キーへのアクセスに使用するエージェント ソケットを指定します。エージェントとそのソケットは sshd で使用できる必要があります。
HostKeyAgent /run/ssh-hostkey-agent.sockIgnoreRhostsホストベースの認証のためのユーザーごとの rhosts または shosts ファイルの使用を制御します。受け入れられる値はバージョンによって異なります。
IgnoreRhosts yesIgnoreUserKnownHostsホストベースの認証中にユーザー固有の known_hosts ファイルを無視するかどうかを制御します。
IgnoreUserKnownHosts yesKerberosAuthenticationKerberos サポートを使用して構築および構成されている場合は、Kerberos パスワード認証を制御します。
KerberosAuthentication noKerberosGetAFSTokenビルドがサポートしている場合、Kerberos 認証されたユーザーの AFS トークンの取得を制御します。
KerberosGetAFSToken noKerberosOrLocalPasswd失敗した Kerberos パスワード検証をローカル パスワード認証にフォールバックするかどうかを制御します。
KerberosOrLocalPasswd noKerberosTicketCleanupサポートされている場合、ログアウト時のユーザーの Kerberos チケット キャッシュの削除を制御します。
KerberosTicketCleanup yesLogVerbose一致するソースの場所のログの詳細度をオーバーライドします。これはトラブルシューティングを目的としており、機密情報が公開される可能性があります。
LogVerbose kex.c:*:1000ModuliFileDiffie-Hellman グループ交換に使用されるモジュライ ファイルへのパス。プラットフォームのガイダンスに従ってメンテナンスしてください。
ModuliFile /etc/ssh/moduliPAMServiceNameこのディレクティブをサポートするビルドで PAM サービス名を選択します。選択したサービスの PAM ポリシーが存在する必要があります。
PAMServiceName sshdPermitTunnelデバイス転送の制御: はい、ポイントツーポイント、イーサネット、またはいいえ。追加のシステム権限と構成が必要になる場合があります。
PermitTunnel noPermitUserRCユーザーの SSH rc ファイルの実行を制御します。これを無効にすると、ユーザー セッションのセットアップに影響する可能性があります。
PermitUserRC noPerSourceMaxStartups送信元アドレスまたは送信元グループごとに同時非認証接続を制限します。サポートされるバージョンは異なります。
PerSourceMaxStartups 10PerSourceNetBlockSizeソースごとの接続制限のソースをグループ化するために使用される IPv4 および IPv6 プレフィックス長を設定します。
PerSourceNetBlockSize 32:128PerSourcePenalties問題のあるソースに対するペナルティを設定します。サポートされるペナルティのタイプ、値、およびデフォルトは、OpenSSH バージョンによって異なります。
PerSourcePenalties noPerSourcePenaltyExemptListソースごとのペナルティから免除されるソース アドレスまたは CIDR 範囲をリストします。免除の範囲が狭いことを確認します。
PerSourcePenaltyExemptList 192.0.2.0/24PidFileサーバープロセスIDファイルへのパス。サービス マネージャーと権限がこのパスに一致していることを確認してください。
PidFile /run/sshd.pidPrintLastLog対話型ログインの前回のログイン時刻の出力を制御します。可用性はプラットフォームのサポートによって異なる場合があります。
PrintLastLog yesPubkeyAuthOptionsセキュリティ キー タッチや検証要件 (サポートされている場合) を含む、公開キー認証オプションを設定します。
PubkeyAuthOptions touch-requiredRefuseConnection通常は Match ブロック内で接続を拒否します。利用可能かどうかはバージョンによって異なります。
Match User blocked
RefuseConnection yesRequiredRSASizesshd が受け入れる最小の RSA キー サイズを設定します。値を小さくするとセキュリティが弱くなる可能性があり、バージョンによっては最小値が課される場合があります。
RequiredRSASize 3072RDomainルーティング ドメインをサポートするプラットフォームでセッションのルーティング ドメインを選択します。これはプラットフォーム固有です。
RDomain 1SecurityKeyProviderFIDO セキュリティ キー ミドルウェア ライブラリへのパス。未設定のままにすると、利用可能な場合は組み込みサポートが使用されます。
SecurityKeyProvider /usr/local/lib/libsk-libfido2.soSshdAuthPathsshd 認証ヘルパーをサポートするバージョンおよびプラットフォーム上の sshd 認証ヘルパーへのパス。通常はパッケージによって管理されます。
SshdAuthPath /usr/libexec/sshd-authSshdSessionPathsshd セッション ヘルパーをサポートするバージョンおよびプラットフォーム上の sshd セッション ヘルパーへのパス。通常はパッケージによって管理されます。
SshdSessionPath /usr/libexec/sshd-sessionStreamLocalBindMaskUnix ドメイン転送ソケットの 8 進ファイル モード作成マスクを設定します。
StreamLocalBindMask 0177StreamLocalBindUnlink転送リスナーを作成する前に、既存の Unix ドメイン ソケットを削除するかどうかを制御します。
StreamLocalBindUnlink noUnusedConnectionTimeout指定した時間が経過すると、開いているチャネルがない接続を閉じます。影響を受ける動作と可用性はバージョンによって異なります。
UnusedConnectionTimeout 5mX11DisplayOffsetX11 転送に使用できる最初のディスプレイ番号を設定します。
X11DisplayOffset 10X11UseLocalhost有効な場合は、X11 転送サーバーをループバックにバインドします。これを無効にすると、ディスプレイがより広範囲に公開される可能性があります。
X11UseLocalhost yesXAuthLocation該当する場合、X11 転送に使用される xauth プログラムへのパス。
XAuthLocation /usr/bin/xauthIPQoS対話型セッションと非対話型セッションの IP サービス品質マーキングを設定します。ネットワーク デバイスは、これらのマーキングを解釈または無視する場合があります。
IPQoS lowdelay throughputMACsメッセージ認証コードのアルゴリズムを選択します。デフォルトを変更すると、セキュリティとクライアントの互換性に影響を与える可能性があります。
MACs hmac-sha2-256-etm@openssh.comSetEnv子セッションの環境変数を設定します。これらの値は、クライアントまたはユーザー環境ファイルから受け入れられた変数をオーバーライドします。
SetEnv LANG=en_US.UTF-8UseDNS接続クライアントの逆引き 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日