Назад | Перейти на главную страницу

Linux ssh client регистрирует все команды

Я собираюсь настроить консоль Linux для входа в устройства Cisco через ssh только с этой машины Linux. Как я могу настроить ssh-клиент в Linux для регистрации всех команд, применяемых к устройствам Cisco?

Вы можете использовать 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.

Поправьте меня, если я ошибаюсь, но, AFAIK, даже устройства CISCO имеют файл .bash_history. Когда вы входите в систему, все команды сохраняются там в порядке шкалы времени. Поэтому я не вижу смысла просить SSH-клиент сохранять каждую вводимую вами команду.

Я нашел решение с помощью "| tee -a logfile". Есть ли другое решение для этого? Мне нужны только команды в файле журнала, а не весь вывод, если это возможно.