
저는 여러 사람이 사용하는 OpenBSD SSH 점프호스트의 관리자로서 터널링을 위해서라도 사용자가 SSH를 통해 연결할 때마다 특정 명령을 실행하고 싶습니다.
이것이 가능한가?
나는 사용해 보았지만 ForceCommand
이는 /etc/sshrc
사용자가 대화형 세션을 가질 때만 적용되고 그렇지 않은 경우에만 적용되는 것 같습니다.
저는 OpenBSD를 실행하고 있기 때문에 불행하게도 PAM 기반의 어떤 것도 작동하지 않습니다.Unix 및 Linux에 대한 답변입니다.
스크립트는 누가 로그인했고 어디서 로그인했는지 알려주기 위해 및 sendmail
를 사용 하여 실행됩니다.whoami
$SSH_CONNECTION
#!/bin/sh
[email protected]
sendmail -F alerts -f $EMAIL root << EOF
Subject: New Login For $1
Message-ID: <$(date +%s)@$(hostname)>
X-Mailer: OpenSMTPD
Content-Type: text/plain
There has been a new login for $1 on $SSH_CONNECTION
EOF
답변1
특정 줄이 일치할 때마다 메시지를 보내는 데 모니터링 /var/log/authlog
하고 사용할 수 있습니다.awk
tail -f /var/log/authlog | awk '/Accepted pubkey/ { system("mail -s " $0 " [email protected] << EOF\nEOF") }'
물론 귀하의 /Accepted pubkey/
경우에 맞는 다른 패턴으로 바꿀 수도 있습니다. 나는 MUA를 더 쉽게 읽을 수 있도록 제목에 로그 줄을 포함하여 빈 이메일을 보내기로 선택했지만 여러분은 다음과 같은 것을 선호할 수도 있습니다.
system("mail -s New\\ Login [email protected] << EOF\n" $0 "\nEOF")