想象一下这个场景。 你刚刚配置 基于 SSH 密钥的身份验证 在您的 Linux 服务器中。 然后,您决定完全禁用基于密码的身份验证,只允许对所有用户进行基于密钥的身份验证。 在禁用密码验证之前,您需要验证哪些用户仍在使用密码通过 SSH 访问服务器。 将如何做到这一点? 好吧,这是可能的! 本简要指南解释了如何确定用户是否在 Linux 中使用基于密码或基于密钥的 SSH 身份验证。
查找用户是否使用基于密码或基于密钥的 SSH 身份验证
我们可以使用密码或 ssh 密钥识别用户是否通过 SSH 登录到 Linux 服务器。 这不是 100% 可靠和有保证的方法,但它仍然是一个好方法。
首先,检查是否 ~/.ssh/authorized_keys
文件存在。 因为,在基于 SSH 密钥的身份验证方法中,应该将 SSH 公钥上传到您要通过 SSH 访问的系统。 公钥通常存储在一个名为 ~/.ssh/authorized_keys
在远程系统中。 如果此文件存在,则用户可能正在使用基于密钥的身份验证。
接下来,检查身份验证日志文件以验证用户当前使用哪种身份验证方法来访问远程系统。 auth方法登录 "/var/log/secure"
基于 RPM 的系统(例如 CentOS)上的文件, "/var/log/auth.log"
基于 DEB 的系统(例如 Ubuntu)上的文件。
只需使用在身份验证日志文件中查找密码条目 grep 命令 或您喜欢的任何其他方式。
$ grep 'password' /var/log/secure
或者,
$ grep 'password' /var/log/auth.log
样本输出:
[...] May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2 May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
你注意到线条了吗 “接受的密码……” 在上面的输出中? 这意味着用户正在使用密码访问远程系统。 根据上述输出,用户 “森提尔” 和 “问” 正在使用 ssh 密码身份验证访问远程系统。
如果用户使用基于密钥的身份验证,您可能会看到如下输出:
May 8 10:40:56 ostechnix sshd[3405]: Accepted publickey for sk from 192.168.225.37 port 41992 ssh2
当然,如果日志文件很长且条目很多,那就有点困难了。 在这种情况下,使用 "tail"
命令查看特定数量的日志文件。
为了 example,以下命令将仅显示日志文件的最后 10 个条目:
$ grep 'password' /var/log/auth.log | tail -n 10
样本输出:
May 8 10:21:49 ostechnix sshd[2135]: Accepted password for senthil from 192.168.225.37 port 41920 ssh2 May 8 10:21:57 ostechnix sshd[2222]: Accepted password for sk from 192.168.225.37 port 41922 ssh2 May 8 10:24:57 ostechnix sshd[2360]: Accepted password for senthil from 192.168.225.37 port 41924 ssh2 May 8 10:25:04 ostechnix sshd[2448]: Accepted password for sk from 192.168.225.37 port 41926 ssh2 May 8 10:29:40 ostechnix sshd[2663]: Accepted password for senthil from 192.168.225.37 port 41938 ssh2 May 8 10:29:55 ostechnix sshd[2765]: Accepted password for sk from 192.168.225.37 port 41940 ssh2 May 8 10:39:34 ostechnix sshd[3064]: Accepted password for senthil from 192.168.225.37 port 41986 ssh2 May 8 10:39:55 ostechnix sshd[3184]: Accepted password for sk from 192.168.225.37 port 41988 ssh2 May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2 May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2
你也可以使用 -f
标记以在您测试时跟踪日志。
$ grep 'password' /var/log/auth.log | tail -f -n 10
如果要检查整个日志文件以查找 “密码” 逐页输入,使用 "less"
命令:
$ grep 'password' /var/log/auth.log | less
查找所有相关的日志 sshd
(成功或失败尝试),将上述所有命令中的“password”替换为“sshd”。
$ grep 'sshd' /var/log/auth.log | tail -n 10
其他 SSH 相关指南:
- 在 Linux 中允许或拒绝对特定用户或组的 SSH 访问
- 限制每个用户/组/系统的 SSH 登录次数
- 使用 TCP Wrappers 限制对 Linux 服务器的访问
- 通过 SSH 在远程 Linux 系统上执行命令
- 如何在 Linux 中创建 SSH 别名
- 如何通过 SSH 连接到 Linux 上的特定目录
- SSLH – 为 HTTPS 和 SSH 共享同一个端口
- ScanSSH – 快速 SSH 服务器和开放代理扫描器
- 如何使用 Rsync 通过 SSH 恢复部分传输的文件
- 如何一次在多个远程系统上运行单个命令
- DSH – 一次在多台主机上运行 Linux 命令
- 如何在 Linux 中阻止 SSH 会话断开连接
- 如何在 FreeBSD 上启用 SSH
希望这可以帮助。