有没有办法告诉用户如何验证他们的 SSH 连接?即是通过密码还是通过公钥?

有没有办法告诉用户如何验证他们的 SSH 连接?即是通过密码还是通过公钥?

我正在锁定我的服务器以仅使用公钥。我只是想在切换开关之前确保所有用户都已完成转换,并且没有人使用密码登录。

答案1

在Ubuntu上:

$ sudo cat /var/log/auth.log|grep ssh|grep Accept

在 CentOS/RHEL 上:

$ sudo cat /var/log/secure|grep ssh|grep Accept

这将显示所有连接,以及它们如何进行身份验证[自日志文件上次轮换以来]。

如果你仅有的想要查看密码连接,只需通过另一个 grep 进行管道传输:

 ... grep ssh|grep Accept|grep password

为了奖励积分,仍然使用密码的用户的简明列表(假设上面命令的输出显示第 9 列中的用户名):

... grep password|awk '{print $9}'|sort|uniq

答案2

环境变量方法

这是一种可能性......如果您很高兴PermitUserEnvironment在您的设置中设置为 true,sshd_config那么您可以对密钥使用环境变量的组合,并进行一些检查/etc/profile以警告/拒绝仍在使用密码方法的任何人。

在你的$HOME/.ssh/authorized_keys文件中你会有这样的内容

environment="KEYUSED=yes" ssh-dsa AAA...

如果使用该键,则/etc/profile运行时变量 KEYUSED 将设置为“yes”。

日志录入方法

另一种方法是,检查 /var/log/secure 中是否有使用密钥的条目

Jul 29 13:58:20 localhost sshd[827]: Accepted publickey for steve from 192.168.124.1 port 50829 ssh2: RSA d3:35:bc:ed:c7:6f:11:27:44:f8:13:66:af:1e:8e:7e

以及使用密码的条目

Jul 29 14:02:08 localhost sshd[1320]: Accepted password for foo from 127.0.0.1 port 57460 ssh2

相关内容