web-dev-qa-db-ja.com

Linuxsshクライアントはすべてのコマンドをログに記録します

そのLinuxマシンからのみssh経由でCiscoデバイスにログインするためのLinuxコンソールボックスをセットアップします。 Linuxでsshクライアントをセットアップして、Ciscoデバイスに適用されたすべてのコマンドをログに記録するにはどうすればよいですか。

3
perun_

scriptコマンドを使用して、すべての端末出力をログに記録できます。これには、通常の状況では、入力されたすべてのコマンドが含まれます。

単一のファイルに追加する場合、呼び出しは次のようになります。

script -a -f -c 'ssh Cisco.example.com' /var/local/log/ssh-Cisco.log

または、呼び出しごとに個別のファイルが必要な場合は、次のようにします。

script -f -c 'ssh Cisco.example.com' "/var/local/log/ssh-Cisco-$(date date +%Y-%m-%d_%H:%M:%S.%N).$$.log"

ユーザーがそれらのコマンドを自分で入力する必要がある場合、もちろん、ログを有効にするために余分な入力をすべて行うのは面倒です。また、ユーザーがログをバイパスできないようにしたくないと想定しているため、シェルスクリプトですべてを記述するだけでは不十分な場合があります。

したがって、ユーザーがログをバイパスするためのアクセス権を持たないようにし、ユーザーがログを含むディレクトリへの書き込みアクセス権を持たないようにする必要があります。

Sshキーへの読み取りアクセス権とログディレクトリへの書き込みアクセス権を持つ別のグループを設定できます。次に、scriptコマンドをset-group-id実行可能ファイルまたはSudoでラップできます。

2
kasperd

「| tee-a logfile」で解決策を見つけました。他に解決策はありますか?可能であれば、すべての出力ではなく、ログファイル内のコマンドのみが必要です。

0
perun_

私が間違っている場合は訂正してください。ただし、Ciscoデバイスでも.bash_historyファイルがあります。ログインすると、すべてのコマンドがタイムライン順に保存されます。したがって、SSHクライアントに入力したすべてのコマンドを保存するように要求することはありません。

0
Bert