Вы, вероятно, используете программный пакет OpenSSH. Утилита OpenSSH scp
ничего не регистрирует. Он поддерживает отладочный вывод для основного сеанса SSH, но он не будет регистрировать фактические передачи файлов, которые происходят.
Точно так же сервер OpenSSH может быть настроен для регистрации сведений о том, что он делает, и он может быть настроен для регистрации факта, что пользователь подключился и запустил scp
, но он не будет регистрировать фактические передачи файлов, которые происходят.
Если вы не можете заставить этих пользователей использовать SFTP, вам доступны три подхода:
Исследовать альтернативные (другими словами, коммерческие) серверы SSH/SFTP/SCP. Как правило, они должны поддерживать протоколирование передачи файлов.
Замените утилиту scp
на сервере той, которая регистрирует нужные вам данные. OpenSSH является открытым исходным кодом. Кто-то, кто знает, как программировать на C для Unix, может загрузить исходный код и изменить его.
Замените утилиту scp
на "обертку", которая запускает оригинальную программу scp и следит за тем, что она делает. Для Unix существуют инструменты отладки, которые могут отслеживать, что делает другой процесс.
Мне нужно было регистрировать передачи scp
один раз, и я использовал третий подход. Я написал скрипт на Perl, который запустил оригинальную программу scp под strace. Strace выведет имена файлов, которые открываются и закрываются процессом scp. Скрипт Perl проанализировал вывод strace и выяснил, какие файлы были переданы.