SSH를 통해 실행 된 모든 명령을 기록하고 싶습니다.
말하다,
ssh something@server.com COMMAND
server.com에 “COMMAND”를 기록하고 싶습니다
광범위하게 검색했지만 아무것도 찾을 수 없습니다.
비슷한 질문이 하나 더 있지만 거기에 해결책이 있다고 생각하지 않습니다.
나는 라이브 뷰를 얻을 수 있습니다
pstree -p | grep ssh
Snoopy, audited 및 sudosh를 시도했지만 ssh를 통해 해당 명령을 기록 할 수 없었습니다.
있다 http://freecode.com/projects/shwatchr은 . 그러나 테스트 할 스크립트를 다운로드 할 수 없습니다.
이 작업을 수행하는 다른 방법이 있습니까?
감사………
답변
SSH에 중점을 두지 않고 한 걸음 물러서서 감사 사용을 고려하십시오. 나는 당신이 정말로 원하는 것은 다른 유형의 로그인과 달리 SSH에서 수행되는 것을 추적하지 않고 사용자를 추적하는 것이라고 가정합니다.
man auditctl
시작점을 제공해야합니다.
답변
내 서버 수세 랩 에서이 옵션을 사용하여 테스트를 수행했지만 작동하지만 더 좋은 방법이 있습니다.
ForceCommand logger -p user.notice "$SSH_ORIGINAL_COMMAND"
답변
나는 이것을 할 수있는 방법을 찾았습니다. John M. Simpson ( https://www.jms1.net/ )이 작성한 perl 스크립트가 있습니다.
당신이해야 할 추가
command="#{path to log-session}"
~ / .ssh / authorized_keys의 각 키 앞에
암호가없는 ssh가있는 경우에만 작동하지만 이것이 내 목적을 어느 정도 해결합니다.
답변
제 경우에는 똑같은 요구 사항이있었습니다. 이 방법의 유일한주의 사항은 ssh 키를 사용하지 않으면 어떻게 작동하는지 잘 모르겠다는 것입니다. 명령을 실행하기 전에 짧은 bash 스크립트를 작성하여 명령을 실행했습니다.
#!/bin/bash
echo "$(date -Is) ${SSH_ORIGINAL_COMMAND}" >> ~/sshcommands.log
sh "${SSH_ORIGINAL_COMMAND}"
이 명령을 ~ / bin / log-commands에 저장 한 다음 실행 가능하게 만들었습니다 ( chmod +x ~/bin/log-commands
).
authorized_keys 파일에서 command=
로그를 갖고 자하는 SSH 키에 속하는 행에 매개 변수를 추가 했으므로 log-commands 스크립트를 실행해야합니다.
command = “/ home / tricky / bin / log-commands”ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ …… 6J0C1 tricky@tricky-testing.mydomain
누군가가 로깅에 대해 알고 있지만 명령을보고 싶지 않은 경우 대화식 세션으로 이동하면됩니다. 언급했듯이 이미 스누피를 시도해 보았습니다. 내가 시도하지 않은 인기있는 대안은 rootsh, sudosh 및 log-user-session입니다.
답변
스누피가 이것으로 당신을 도울 것입니까? “실행 된 모든 명령을 syslog (일명 Snoopy Logger)에 기록합니다.”