
私は基本的なデプロイ スクリプトを実装しており、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
」ディレクティブを使用します:ssh
sshd
/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 が重複するキーワードをどのように処理するかを知っておくことは、デフォルトを上書きできるようにするために重要です。