SSH验证(无PAM):如何知道用户是否通过密钥或密码登录?

问题描述:

我想在用户SSH登录后执行某些操作,这与公钥或密码不同。 PAM不会涉及我的情况。SSH验证(无PAM):如何知道用户是否通过密钥或密码登录?

程序可以从/ var/log/messages或/var/log/auth.log中检查SSH认证信息。但通常,这些文件对普通用户来说是不可读的。也许我可以chmod o + r,但它听起来不安全。

我也检查了一些SSH相关的环境变量,如'SSH_CONNECTION',但没有一个是有用的。

有没有很好的方法来做到这一点?感谢您的帮助:)

您不能在sshd本身之外这样做,而在其中我唯一知道的方法是使用authorized_keys来匹配特定的键并执行特定的命令。

+0

谢谢。那么,即使我想出如何实现这一点,我仍然需要处理scp,sftp等。嗯,也许我在错误的方向...... – vvoody 2012-04-21 09:18:38

+0

除了PAM,SSH还可以支持任何其他身份验证方法? – vvoody 2012-04-21 09:30:23

+0

ssh只支持PAM,实际上(复杂的PAM堆栈可以与它奇怪地交互);它强烈地喜欢自己做事情,这意味着它唯一的可扩展性是通过随机PAM进行交互。 – geekosaur 2012-04-21 18:56:28

您现在唯一的方法是更改​​/ etc/ssh/sshd_config中的LogLevel并解析您的系统日志输出日志以找出使用的auth方法。

的LogLevel DEBUG有一定的信息需要,但你可能可以找到它也详细级别...测试