SSH登录挂钩?


15

每次用户使用ssh连接时,是否可以运行脚本/命令?是否可以全局配置(即在任何用户登录时运行脚本)?

我在Identica上遇到了这个问题,但是目前还没有答案,并且还是想知道。

Answers:


11

对于所有用户还是特定用户?对于单个用户,将其设置在他们的.bashrc文件中;对于所有用户,请签出pam_exec

如果用户来自sshd,则需要向/etc/pam.d/sshd;其他文件,取决于它们的来源:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

出于测试目的,该模块以形式包含在内optional,因此,如果模块失败,您仍然可以登录。确定其有效后,您可以更改optionalrequired。然后,除非成功执行挂钩脚本,否则无法登录。

注意:与以往一样,更改登录配置时,请在后台打开备用外壳,并从新终端测试登录。


谢谢,这看起来很有希望。您能详细说明一下吗?我不熟悉这个。
phunehehe 2011年

我想我应该添加session include pam_exec.so seteuid /path/to/script到文件中/etc/pam.d/system-remote-login。那是对的吗?
phunehehe 2011年

无论是system-remote-loginsshd,取决于用户如何在未来。
格伦Solsberry

太棒了!如果您编辑答案以包含信息(您知道,对于其他搜索者),那将是很好的。
phunehehe 2011年

请注意,使用Google搜索的人也可以在此行auth optional pam_exec.so /path/to/my/hook.sh中添加内容,/etc/pam.d/common-auth以使PAM通知您发生的任何身份验证事件。该程序还可以向您发送推送通知:github.com/benjojo/PushAlotAuth
Nick Sweeting,

6

还有另一种方法仅影响使用ssh的用户,而不影响本地的ssh(在紧急情况下可能会更好)

请参见下面的ssh手册页中的摘录。

在这种情况下,用户通常可以自己修改文件(有点像.bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

这是全局的,普通用户无法修改

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

2
但是/ etc / sshrc仅在用户没有自己的〜/ .ssh / rc时才会执行,因此该用户可以绕过
isevcik 2013年

2
@isevcik,只有在PermitUserRC设置为“ yes” /etc/ssh/sshd_configman sshd_config有关详细信息,请参阅)
jeremysprofile
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.