Answers:
您可以将一条命令强加给您的SSH用户,而不是他们所请求的命令(如果不提供特定命令,则强制使用它们的shell)。这可以通过使用类似ForceCommand /root/ssh-wrapper
in的命令指定该命令来完成/etc/ssh/sshd_config
(无论脚本位于何处或如何命名,只要确保所有用户都可以执行该脚本,并且sshd配置文件指向该脚本即可)。您还需要重新启动/重新加载sshd
。在原来的命令是可访问的强制命令的$SSH_ORIGINAL_COMMAND
。
我只是一起修改了这个脚本:
#! /bin/sh
# add logger options when needed
log="logger -t ssh-wrapper"
# find IP address
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
$log $USER login from $ip
espeak "$USER just logged in from $ip" > /dev/null 2>&1
$log command: ${SSH_ORIGINAL_COMMAND:-shell}
${SSH_ORIGINAL_COMMAND:-shell}
$log $USER logout
espeak "$USER just logged out" > /dev/null 2>&1
现在,每次我登录或注销时,都会有声音告诉我有关情况,并且日志条目会写入syslog。它还记录命令。您可以使用类似以下的内容来“遵循”您的sshd用法:
tailf /var/log/syslog | grep ssh-wrapper
请注意,该脚本大部分未经测试,因此使用后果自负! ;-)
PS:请记住,此脚本是以登录用户的身份运行的,因此,如果您对其进行更改以添加更多功能,则无法做任何事情...
shell
$ {SSH_ORIGINAL_COMMENT:-shell}中的内容替换为外壳的实际路径,例如。/ bin / bash?当我尝试运行该命令时,它抱怨说没有像shell这样的命令。实际上,我想也许您的意思是$ SHELL?那应该运行用户指定的shell。
(从ServerFault上的同一问题交叉发布的答案)
只要写一个脚本做任何你想要的,然后把它贴在/etc/profile
或可能/etc/bash.bashrc
根据您的需要。对这些文件的更改将适用于所有用户。不过,我不确定您将如何使用这种方法在登出时进行通知。
另外,执行此操作的另一种方法是使用简单的守护程序监视/var/log/auth
新的(和关闭的)ssh会话。这样,它将能够在登录和注销时发送通知。
我认为PAM是最好的选择。它是系统范围的,不能被用户的配置文件覆盖。
您可以按照以下步骤。他们在Ubuntu 14.04.4 LTS上为我工作。
跑:
$ sudo pico /opt/custom/bin/info-session.sh
编辑该空文件并添加以下行:
#!/bin/sh
[ "$PAM_TYPE" = "open_session" ] || exit 0
INFO=$(date +"%Y/%m/%d %T $PAM_USER ($PAM_RHOST) $PAM_SERVICE $PAM_TTY") # You can customize message.
echo "PAM access: $INFO" | write user > /dev/null 2>&1 # See Note 1.
exit 0
之后,授予脚本执行权限:
$ sudo chmod ugo+x /opt/custom/bin/info-session.sh
现在,运行:
$ sudo pico /etc/pam.d/common-session
在文件末尾添加以下行:
# Modified by user:
session optional pam_exec.so /opt/custom/bin/info-session.sh
无需重启任何服务。请注意,当用户从终端而不是SSH登录时,也会运行此脚本。
注意1:您可以通过管道传输到espeak
其他管道或满足您需求的任何其他过程(电子邮件,推送通知等)。如果您使用write
并且用户已登录,那么他(她)将直接在其终端上看到输出消息。
参考:
https : //blog.stalkr.net/2010/11/login-notifications-pamexec-scripting.html
https://blog.redbranch.net/2014/06/04/pam_exec-so-execute-commands-on -用户登录/
相关:
ssh登录成功后,如何设置电子邮件警报?
通过/server//questions
/server/400613/how-can-i-configure-my-server-to-notify-me-whenever-it-is-remotely-accessed- / 395393 /电子邮件通知-关于每个ssh-连接到Linux服务器的信息