sshd_config 内の設定を重複した設定で上書きできますか

sshd_config 内の設定を重複した設定で上書きできますか

私は基本的なデプロイ スクリプトを実装しており、sshd_config に対して行う必要がある唯一の変更は、PermitRootLogin yes を PermitRootLogin without-password に変更することです。ドキュメントを読みましたが、これについては何も触れられていませんが、不可能だというわけではありません。

2 番目の PermitRootLogin を指定できますか? つまり echo 'PermitRootLogin without-password' >> /etc/ssh/sshd_config

もしそうなら、これは安全ですか?

コメントに基づく更新:

1) ファイルを解析して変数を変更できることはわかっています。しかし、疑問はまだ残っています。

答え1

いいえ。

行を追加してログインできるかどうかを確認するだけで、これをテストできます。次に、最初の出現箇所をコメント アウトし、サービスを再起動して再度テストします。

理由:OpenSSHservconf.cには機能がある

  • process_server_config_line()1200-2171行目(7.9p1の場合)
  • 1260-2371 行目を呼び出すようにリファクタリングされましたprocess_server_config_line_depth()(8.3p1 の場合)。

すべてのグローバル ディレクティブは起動時にのみ処理され、一度だけ処理されます。設定は最初の発生時と同じままになります。

一方、同じ指示を 2 回使用すると、誤解を招く可能性があります。

ファイルの解析を再検討してください。該当する場合は、ファイル全体を置き換えることもできます。

答え2

TL;DR はいDebian および派生製品は、早期のインクルード ファイルをサポートします。

デビアンそしてウブントゥ設定ファイルの早い段階で「Include」ディレクティブを使用します:sshsshd

/etc/ssh/ssh_config:19:Include /etc/ssh/ssh_config.d/*.conf
/etc/ssh/sshd_config:13:Include /etc/ssh/sshd_config.d/*.conf

以前の回答に同意します。Includeディレクトリ ファイルが最初に処理される場合は、最初に見つかった値が優先されます。

echo PermitRootLogin without-password > /etc/ssh/sshd_config.d/PermitRootLogin.conf

答え3

いいえ、ほとんどの設定では最初に見つかった値のみが使用されます。X11Forwarding 設定は、これを簡単にテストできる設定です。そうは言っても、ユーザーごとのオーバーライド設定を利用して同じことを実行できる可能性があります。これらは通常、一番下にタグ付けされるため、追加するという目的に適しています。

そうは言っても、他の人が言ったように、sed の方がはるかにクリーンなソリューションになります。

sed -i 's/PermitRootLogin yes/PermitRootLogin without-password/g' /etc/ssh/sshd_config

答え4

以前の回答を修正します。現時点では、マニュアルのためにsshd_configファイルは「各キーワードに対して、最初に取得された値が使用されます」で始まります。したがって、他の人がすでに書いているように、重複は無視されます。

使用することも可能ですマッチ条件に基づいてグローバル設定を上書きするブロック。ルートログイン許可は、Match ブロックで許可されるキーワードの 1 つです。

(私が使用しているOSのsshdのデフォルト設定が、含むディレクティブ + glob パターン、ベンダーのデフォルトを別のファイルに移動します。したがって、sshd が重複するキーワードをどのように処理するかを知っておくことは、デフォルトを上書きできるようにするために重要です。

関連情報