我希望我的OpenSSH服务器在用户使用SSH登录时启动脚本,最好是传递主机名或IP以及用户名。另外,无论何时会话终止(传递用户名),我都希望它运行脚本。这些脚本不应在用户会话中运行,而应在系统范围内运行。
这个想法是在登录和注销时发出声音警告,例如使用espeak
,并在外部显示器上显示信息。
我已经看到有一个pam-scripts
软件包,但是我不确定这是否满足我的要求,也不确定如何使用它。
您可以将一条命令强加给您的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:请记住,此脚本是以登录用户的身份运行的,因此,如果您对其进行更改以添加更多功能,则无法做任何想要的事情...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句