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