技术知识库

帮助中心 >  产品文档 >  云服务器 >  在Linux中查找所有失败的SSH登录尝试

每次尝试登录到SSH服务器都会被Linux中的rsyslog守护进程跟踪并记录到日志文件中。 在Linux中列出所有失败的SSH登录尝试的最基本的机制是在cat命令或grep命令的帮助下显示和过滤日志文件的组合。


为了在Linux中显示失败的SSH登录列表,请发布本指南中提供的一些命令。 确保这些命令是以root权限执行的。


列出所有失败的SSH登录名的最简单命令如下所示。

# grep "Failed password" /var/log/auth.log


image.png

列出所有失败的SSH登录尝试


发出cat命令也可以达到同样的效果。


# cat /var/log/auth.log | grep "Failed password"

为了显示有关失败的SSH登录的额外信息,请按照下面的示例所示发出命令。


# egrep "Failed|Failure" /var/log/auth.log

image.png


在CentOS或RHEL中 ,失败的SSH会话记录在/ var / log / secure文件中。 针对此日志文件发出上述命令以标识失败的SSH登录名。


# egrep "Failed|Failure" /var/log/secure

image.png

在CentOS中查找失败的SSH登录


上述命令的稍微修改版本显示在CentOS或RHEL中失败的SSH登录如下。


# grep "Failed" /var/log/secure

# grep "authentication failure" /var/log/secure

image.png

要显示尝试失败登录到SSH服务器的所有IP地址列表以及每个IP地址尝试失败的次数,请发出以下命令。


# grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr

image.png

在较新的Linux发行版中,可以通过journalctl命令查询Systemd守护进程维护的运行时日志文件。 为了显示所有失败的SSH登录尝试,您应该通过grep过滤器来输出结果,如以下命令示例所示。


# journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"

# journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure"  #In RHEL, CentOS 

image.png

在CentOS或RHEL中 ,使用sshd.service替换SSH守护程序单元,如下面的命令示例所示。


# journalctl _SYSTEMD_UNIT=sshd.service | grep "failure"

# journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"

在确定了频繁出现在你的SSH服务器上的IP地址,以便用可疑的用户帐号或无效的用户帐号登录系统后,你应该更新系统防火墙规则来阻止失败的SSH尝试 IP地址或者使用专门的软件,比如fail2ban来管理这些攻击。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: