在任何SSHlogin/连接(任何人通过SSHlogin),有没有办法执行一个脚本? 使用OpenSSH服务器。
脚本不应该被任何用户修改,当然,所以这应该是一个系统范围的脚本。
谢谢!
如果你打算不干涉用户体验,可以看一下syslog的替代品(例如syslog-ng)。 当有人login时,可以通过SSH服务器触发日志消息发送到系统日志的命令。
这种方法是有点rube-goldbergian,并依赖syslog工作正常。 YMMV,恕我直言,SLATFATF
每当有人login时,您已经有一个正在执行的脚本: /etc/profile
您可以修改该脚本来执行您想要的任何任务,或者直接调用脚本。 在Debian衍生产品中,您可以将自定义脚本(以.sh结尾)放在/etc/profile.d并自动调用。
注:我刚才所说的一切只适用于Bourne shell衍生物,比如默认的/bin/sh ,ash,bash,ksh等等。大多数用户坚持使用bash,所以上面的指示可能就是您所需要的。 其他系列的shell使用其他启动脚本。 例如,Tcsh将在login时执行/etc/csh.cshrc 。
请参阅sshd_config(5) ForceCommand :
强制执行由ForceCommand指定的命令, 忽略客户端提供的任何命令以及〜/ .ssh / rc 当下。 该命令通过使用用户的loginshell进行调用 与-c选项。 这适用于shell,命令或子系统 执行。 它在Match块内最有用。 命令 最初由客户提供的是可用的 SSH_ORIGINAL_COMMAND环境variables。 指定一个命令 ``internal-sftp''将强制使用进程内的sftp 服务器,使用时不需要支持文件 ChrootDirectory。
您可以更改用户的shell,以便在login时执行自定义脚本。 它可能是任何用户需要它的默认shell(我build议保持一个pipe理员帐户与bash来解决问题)。