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