Команды журнала, запущенные через SSH на стороне клиента

Команды журнала, запущенные через SSH на стороне клиента

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

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

ssh [email protected] -- foo -a --bar baz

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

Я бы предпочел подключиться к серверу по ssh обычным способом, либо через сам ssh, либо через команду-оболочку, например «ssh-logging».

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

Короче говоря, я бы хотел, чтобы произошло что-то вроде следующего:

~ $ ssh [email protected]
[user@host ~]$ foo --bar
[user@host ~]$ exit
~ $ cat .ssh_history_user@host
foo --bar
exit
~ $

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

решение1

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

~ 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

решение2

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

Связанный контент