터널링을 위해서라도 사용자가 연결할 때마다 SSH 서버에서 명령을 실행합니다.

터널링을 위해서라도 사용자가 연결할 때마다 SSH 서버에서 명령을 실행합니다.

저는 여러 사람이 사용하는 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")

관련 정보