次のネットワークトポロジがあります。
workstation <-> network_device <-> authentication_server
network_device
workstation
SSH経由でログインするときは、TACACS +を使用してログイン権限があること、アクセス権が何であるかを確認してくださいnetwork_device
。で実行すると、ネットワークデバイスバナーは表示されませんが、次のプロンプトが表示されます。authentication_server
network_device
ssh -o LogLevel=quiet network_device
workstation
$ ssh -o LogLevel=quiet network_device
TACACS authentication!
Password:
$
このTACACS authentication!
文字列はで設定されますauthentication_server
。を実行すると、ssh -vvv -o LogLevel=quiet network_device
このバナーとパスワードのプロンプトが異なるようです。メッセージID。バナー:
debug3: receive packet: type 53
debug3: input_userauth_banner
*************************************************
* Access limited to Authorized Users only *
*************************************************
パスワードヒント:
debug3: receive packet: type 60
debug2: input_userauth_info_req
debug2: input_userauth_info_req: num_prompts 1
TACACS authentication!
Password:
OpenSSHクライアントLogLevel
オプションは、LogLevel
値に基づいて特定のメッセージIDをフィルタリングすることによって機能しますか?マニュアルページには、LogLevel
表示する内容を決定する方法が正確に記載されていません。
LogLevel
Gives the verbosity level that is used when logging messages from ssh(1). The possible values are: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2, and DEBUG3. The default is
INFO. DEBUG and DEBUG1 are equivalent. DEBUG2 and DEBUG3 each specify higher levels of verbose output.
答え1
あなたが知りたいほとんどの内容はlog.c
OpenSSHソースコードにあります。という列挙変数がありますlog_level
。 (列挙とは内部的には数値のように機能しますが、各レベルはわかりやすい名前に関連付けられていることを意味します。)このlog_level
変数はグローバルに設定され、興味のないログを隠すマスクとして機能します。
その後、何かが記録されるたびに、そのメッセージも重要度レベルに関連付けられ、メッセージ+重要度にはという関数が提供されますdo_log
。
関数内でdo_log
次のチェックを見ることができます。
if (!force && level > log_level)
return;
つまり、メッセージが設定されたログレベルよりも重要ではない場合、そのメッセージはログ出力から削除されます。
このdo_log
関数は、メッセージの重要度レベルを使用して、fatal
出力にプレフィックスを追加するか適切なプレフィックスを追加するかを決定するなど、追加の処理を実行します。