在SSH登录和/或注销时运行(系统)脚本

日光浴

我希望我的OpenSSH服务器在用户使用SSH登录时启动脚本,最好是传递主机名或IP以及用户名。另外,无论何时会话终止(传递用户名),我都希望它运行脚本。这些脚本不应在用户会话中运行,而应在系统范围内运行。

这个想法是在登录和注销时发出声音警告,例如使用espeak,并在外部显示器上显示信息。

我已经看到有一个pam-scripts软件包,但是我不确定这是否满足我的要求,也不确定如何使用它。

JanC

您可以将一条命令强加给您的SSH用户,而不是他们所请求的命令(如果不提供特定命令,则强制使用它们的shell)。这可以通过使用类似ForceCommand /root/ssh-wrapperin的命令指定该命令来完成/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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章