SSH:我们如何在运行时找到 sshd 配置中使用的用户身份验证机制

SSH:我们如何在运行时找到 sshd 配置中使用的用户身份验证机制

我想修改 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 ...

然后,您可以检查某些启动脚本中变量是否存在,以执行“非密钥”(密码)脚本。

相关内容