在 Linux 系统中,如果你想彻底清除 root 登录历史记录、命令记录、临时缓存等,如IP地址(包括 /var/log/wtmp、/var/log/btmp 和 systemd-journald 日志),可以按照以下方法操作:
bash <(wget -qO- https://raw.githubusercontent.com/hadis898/allscript/refs/heads/main/clear_all_logs.sh)
选择5一键清理所有记录

完成后自动断开连接,不放心的话可以验证下。
验证命令:last # 检查登录记录,加root参数就表示只查roothistory # 检查命令历史journalctl -u sshd # 检查SSH日志ls -la /var/log/ # 检查系统日志cat ~/.bash_history # 检查bash历史文件
以下没需求可以不用看。
/var/log/wtmp(成功登录记录)wtmp 文件存储了所有用户的登录历史,可以用 last 命令查看。
清除方法:
# 清空 wtmp 文件(所有登录记录)
sudo echo > /var/log/wtmp
# 验证是否清除成功
sudo last root # 应该显示 "wtmp begins [空日期]"
/var/log/btmp(失败登录记录)btmp 文件存储了失败的登录尝试,可以用 lastb 命令查看。
清除方法:
# 清空 btmp 文件
sudo echo > /var/log/btmp
# 验证是否清除成功
sudo lastb root # 应该显示 "btmp begins [空日期]"
systemd-journald 日志如果系统使用 journald(现代 Debian 默认),执行:
# 删除所有日志(慎用!)
sudo journalctl --flush --rotate
sudo rm -rf /var/log/journal/*
sudo systemctl restart systemd-journald
# 或者只删除 SSH 相关日志
sudo journalctl --vacuum-time=1s -u sshd
--vacuum-time=1s:删除 1 秒前的日志(几乎全部清除)-u sshd:仅删除 SSH 日志/var/log/auth.log(如果存在)如果系统使用 rsyslog,可能会有 /var/log/auth.log:
# 清空 auth.log
sudo echo > /var/log/auth.log
# 或者只删除 root 相关的记录
sudo sed -i '/root/d' /var/log/auth.log
如果你希望未来也不记录登录日志,可以修改 SSH 配置:
sudo nano /etc/ssh/sshd_config
修改以下行:
LogLevel QUIET # 关闭 SSH 日志
SyslogFacility AUTHPRIV
然后重启 SSH:
sudo systemctl restart sshd
# 检查 wtmp/btmp
sudo last root
sudo lastb root
# 检查 journald 日志
sudo journalctl -u sshd _UID=0
# 检查 auth.log(如果存在)
sudo grep "root" /var/log/auth.log
如果返回空结果或无记录,说明清除成功。
logrotate)可能会备份日志,检查 /var/log/ 下是否有 *.gz 或 *.old 文件。systemd-journald 可能会缓存部分日志在内存,重启后才会完全清除。| 文件/日志 | 清除方法 | 验证命令 |
|---|---|---|
/var/log/wtmp |
sudo echo > /var/log/wtmp |
last root |
/var/log/btmp |
sudo echo > /var/log/btmp |
lastb root |
journald |
sudo journalctl --vacuum-time=1s |
journalctl -u sshd |
/var/log/auth.log |
sudo echo > /var/log/auth.log |
grep "root" auth.log |
如果你需要完全隐身,建议:
请勿非法用途,仅供研究。
谢谢大佬
牛皮啊
伸手了,谢谢