Я собираюсь настроить консоль 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". Есть ли другое решение для этого? Мне нужны только команды в файле журнала, а не весь вывод, если это возможно.