我希望每当用户建立与 sshd 的连接时执行一个命令。
我尝试设置命令/etc/ssh/sshrc
并设置PermitUserRC no
以/etc/ssh/sshd_config
防止用户覆盖它。
但是,这种方法不适用于-N
通常用于端口转发连接的选项的连接。
我也尝试了描述的解决方案https://askubuntu.com/a/724796/484694,但这也会在登录尝试失败时执行命令,这不是我想要的。
有没有什么方法可以使用 sshd 实现所需的行为?
答案1
您可以使用询问 Ubuntu 答案使用pam_exec.so
,只需在session
PAM 配置部分使用它而不是auth
,因为session
只有在身份验证成功后才会执行模块。
将其添加到您的/etc/pam.d/sshd
:
session optional pam_exec.so /path/to/some/script
在执行的脚本中,您可以使用环境变量来$PAM_USER
访问有关正在连接的用户的信息。环境变量尤其$PAM_TYPE
适用于检查脚本中会话是否已打开或关闭。
请参阅手册页pam_exec(8)更多细节。