로그 명령은 클라이언트 측에서 SSH를 통해 실행됩니다.

로그 명령은 클라이언트 측에서 SSH를 통해 실행됩니다.

SSH(특히 OpenSSH이지만 반드시 그런 것은 아님)를 실행하고 원격에 대해 실행하는 모든 명령을 로컬 파일에 기록하는 방법을 찾고 있습니다.

각 명령을 독립적인 ssh 명령으로 실행하면 실제로 각 명령이 내 로컬 기록에 기록되지만 일반적으로 실행하는 것은 바람직하지 않습니다.

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

모든 명령에 대해.

나는 ssh 자체를 통하거나 'ssh-logging'과 같은 래퍼 명령을 통해 일반적인 방법으로 서버에 ssh를 연결하고 싶습니다.

나는 ssh를 통해 입력된 명령을 쉘이 수행하는 방식과 비슷하게 로컬 클라이언트 시스템의 파일에 저장하는 프로그램을 구상하고 있습니다. 예를 들어 ~/.ssh_history는 좋은 기본값처럼 보이며 아마도 사용자 + 호스트 조합에 따라 순열될 수 있지만 그렇지 않습니다. 지금 이 순간 어디에 저장되는지 정말 신경쓰세요.

간단히 말해서 다음과 같은 일이 일어나기를 바랍니다.

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

모호한 OpenSSH 클라이언트 구성, 다른 오픈 소스/libre ssh 클라이언트의 일부 또는 단순히 사용자의 stdin 입력 방식에 자신을 배치하고 투명하게 보낼 수 있는 얇은 래퍼 프로그램으로 그러한 것이 존재합니까? 기록하는 동안 실행 중인 프로그램의 표준 입력에 저장하시겠습니까? (SecureCRT에는 대략 이와 유사한 로깅 기능이 있다고 들었지만 적어도 내 개인 생활에서는 FLOSS가 아닌 도구를 사용하고 싶지 않습니다.)

답변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 주변의 로깅 래퍼내가 찾던 것을 수행합니다.

관련 정보