Я ищу способ запустить SSH (в частности, OpenSSH, но не обязательно) и записать все команды, которые я запускаю на удаленном компьютере, в файл локально.

Выполнение каждой команды как независимой команды ssh действительно записывает каждую команду в мою локальную историю, но обычно нежелательно ее запускать, например:

ssh notroot@something.example.com -- foo -a --bar baz

для каждой команды.

Я бы предпочел ssh на сервер обычным способом, либо через сам ssh, либо с помощью команды-оболочки, такой как 'ssh-logging'.

Я предполагаю, что программа сохранит команды, введенные через ssh, в файл на локальном клиентском компьютере в сопоставлении с тем, как это делают оболочки, например, ~/.ssh_history кажется хорошим значением по умолчанию, возможно, переставлено для комбинации пользователь + хост, но я не действительно волнует, где он сохраняет в данный момент.

Короче говоря, я бы хотел, чтобы произошло нечто подобное:

~ $ ssh user@host.example.com
[user@host ~]$ foo --bar
[user@host ~]$ exit
~ $ cat .ssh_history_user@host
foo --bar
exit
~ $

Существует ли такая вещь, либо как неясная конфигурация клиента OpenSSH, либо как часть другого ssh-клиента с открытым исходным кодом /libre, либо как тонкая программа-обертка, которая может просто поместить себя на пути ввода stdin пользователя и прозрачно отправить их в stdin работающей программы во время их входа? (Я слышал, что SecureCRT имеет функцию ведения журнала, которая, возможно, примерно такая, но, по крайней мере, в моей личной жизни у меня нет желания использовать инструменты без FLOSS).

2 ответа2

0

Благодаря комментарию Ойгена Рика о передаче ssh через tee, я смог реализовать оболочку для ведения журнала вокруг ssh, которая делает то, что я искал.

0

Если вы работаете в Unix, стандартный служебный script предназначен для этой цели. Если вы запускаете script без аргументов, он запускает копию вашей оболочки и записывает сеанс в файл с именем "typcript":

~ jdoe$ script
Script started, output file is typescript
bash-3.2$ date
Fri May  8 16:29:44 EDT 2015
bash-3.2$ exit
exit

Script done, output file is typescript
~ jdoe$ cat typescript
Script started on Fri May  8 16:29:42 2015
bash-3.2$ date
Fri May  8 16:29:44 EDT 2015
bash-3.2$ exit
exit

Script done on Fri May  8 16:29:45 2015
~ jdoe$ 

Вы можете указать файл для входа и команду для запуска вместо оболочки. Эта часть не полностью стандартизирована. В моей системе OSX вы бы запустили это так:

script name-of-log-file command arg...
eg
script ssh-log ssh user@somehost

С обычной версией Linux вы бы запустили ее так:

script -c 'command arg...' name-of-log-file
eg
script -c 'ssh user@somehost' ssh-log

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .