我想修改 sshd_config 文件,如果用户使用密码 ssh 进入,则运行一个脚本,如果用户使用 SSH 签名证书 ssh 进入服务器,则运行另一个脚本。我明白了,这可能可以通过 Match 和 ForceCommand 的组合来实现,但我很难理解如何识别用户是使用 PasswordAuthentication 进入还是使用 SSH Cert 进入服务器。
例如如下所示:
匹配(如果用户使用密码) ForceCommand /usr/sbin/passwordscript
匹配(如果用户使用公钥) ForceCommand /usr/sbin/pubkeyscript
匹配(如果用户使用了 TrustedUserCAKeys(?))ForceCommand /usr/sbin/sshcertdscript
有什么方法可以找到用户尝试通过 ssh 进入服务器的方式,无论是密码、公钥还是 TrustedUserCAKeys(SSH 证书)?
提前致谢..
答案1
在authorized_keys
文件,您可以指定使用特定密钥对进行身份验证时要使用的命令。您还可以使用environment
选项设置环境变量:
command="/path/script",command="KEY_WAS_USED=yes" ssh-rsa ...
然后,您可以检查某些启动脚本中变量是否存在,以执行“非密钥”(密码)脚本。