SSHとユーザーIPを介して実行されたコマンドを表示する方法は?

SSHとユーザーIPを介して実行されたコマンドを表示する方法は?

以前質問しましたが、満足のいく回答が得られませんでした。 別のコンピュータで実行されたSSHコマンドを表示するには?

だから今回は確かに聞きたいです。

SSHとそのユーザー/ IPを介してサーバー上で実行されたコマンドをどのように表示できますか?私は次のようなものを探しています:

#tail .bash_history 192.168.1.101 : vi /etc/ssh/sshd_config 192.168.1.102 : ls -l 192.168.1.101 : cd .ssh 192.168.1.101 : systemctl reload sshd.service 192.168.1.102 : service --status-allなど...

ベストアンサー1

この質問が面白くてグーグルして見つけました。これ

より正確には、この行をsshd_configに追加する必要があります。

ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"

によるとman sshd_config

ForceCommand は、
クライアントおよび ~/.ssh/rc (存在する場合) によって提供されるすべてのコマンドを無視し、ForceCommand で指定したコマンドを強制的に実行します。コマンドは、ユーザーのログインシェルと-cオプションを使用して呼び出されます。これはシェル、コマンド、またはサブシステムの実行に適用されます。 Matchブロック内で最も便利です。クライアントが最初に提供したコマンドは、SSH_ORIGINAL_COMMAND環境変数にあります。 Internal-sftp コマンドを指定すると、ChrootDirectory で使用する際にサポートファイルを必要としないインプロセス SFTP サーバーが強制されます。デフォルトはなしです。

私のDebian rsyslogインストールuser.*に記録されました。/var/log/user.log


上記のコマンドは、logger元のコマンドの場所でコマンドを実行することに注意してください。コマンドを記録したい場合そしてその後、実行するには、次の行に沿って操作を実行する必要があります(bash使用可能であると仮定/bin/bash)。

ForceCommand /bin/bash -rc 'logger -p user.notice "$SSH_ORIGINAL_COMMAND"; $SSH_ORIGINAL_COMMAND'

制限されたシェルよりも制限的なラッパースクリプトを使用したり、対話型ログインの場合sshrc/etc/ssh/sshrc)ファイルがロギングを実装する別のオプションかもしれません。

おすすめ記事