如何查看服务器登录用户?服务器用户管理必备技巧
时间:2026-03-22 来源:祺云SEO
服务器查看登录用户
查看当前登录服务器用户的核心方法是使用终端命令:who、w、finger、last以及检查系统日志/var/log/secure(Linux)或/var/log/auth.log(Linux)或安全事件日志(Windows)。
核心命令:实时查看当前活跃用户
-
who命令- 功能:最简洁地列出当前登录系统的用户会话。
- 输出示例:
rootpts/02026-06-1509:30(192.168.1.100)adminpts/12026-06-1510:15(203.0.113.5) - 关键信息:用户名、登录终端类型(
tty物理终端/pts伪终端)、登录时间、来源IP地址(如有)。 - 常用选项:
who-b:显示系统最后一次启动时间。who-r:显示当前运行级别。
-
w命令- 功能:
who命令的增强版,提供更丰富的实时信息,是运维人员首选。 - 输出示例:
09:45:03up2days,5:32,2users,loadaverage:0.00,0.01,0.05USERTTYFROMLOGIN@IDLEJCPUPCPUWHATrootpts/0192.168.1.10009:305.00s0.05s0.00stopadminpts/1203.0.113.510:1515:390.02s0.02s-bash - 关键信息:系统运行时间、负载、用户数;每个用户的用户名、终端、来源IP、登录时间、空闲时间、总CPU时间、当前进程CPU时间以及他们正在执行的命令(
WHAT)。WHAT列对识别异常活动至关重要。
- 功能:
-
finger命令- 功能:提供更详细的用户信息,通常需要安装(
yuminstallfinger或aptinstallfinger)。 - 输出示例:
Login:rootName:rootDirectory:/rootShell:/bin/bashOnsinceSatJun1509:30(CST)onpts/0from192.168.1.1005secondsidleNewmailreceivedSatJun1509:402026(CST)UnreadsinceSatJun1509:002026(CST)NoPlan. - 关键信息:用户名、全名、主目录、使用的Shell、登录详情(时间、终端、来源)、空闲时间、邮件状态、用户计划文件(
~/.plan),适合需要了解用户背景信息时使用。
- 功能:提供更详细的用户信息,通常需要安装(
历史查询与审计:追踪登录足迹
last命令
- 功能:读取
/var/log/wtmp文件,查看系统所有用户的登录/注销历史记录(包括重启事件)。 - 输出示例:
rootpts/0192.168.1.100SatJun1509:30stillloggedinadminpts/1203.0.113.5SatJun1510:15stillloggedinrebootsystemboot5.4.0-150-genericSatJun1509:28stillrunning(系统启动记录) - 关键信息:用户名、登录终端/来源、来源IP地址、登录时间、注销时间(或
stillloggedin/down/crash)、会话持续时间。是安全审计追踪可疑登录的核心工具。 - 常用选项:
last-n10:仅显示最近10条记录。lastusername:查看特定用户记录。last-i:将IP地址显示为主机名(如果配置了反向解析)。lastb:查看失败的登录尝试(读取/var/log/btmp,通常需要sudo权限)。
系统认证日志
- 位置(Linux):
/var/log/secure(RHEL/CentOS/Rocky/AlmaLinux)/var/log/auth.log(Debian/Ubuntu)
- 位置(Windows):事件查看器->Windows日志->安全,筛选事件ID4624(成功登录)、4625(失败登录)、4634/4647(注销)。
- 功能:提供最详细、最原始的登录/登出、认证成功/失败、sudo提权等安全事件记录,包含时间戳、用户名、源IP、使用的服务/协议(如SSH)、进程ID等,是深度安全调查的基石。
- 查看方法:
sudotail-f/var/log/secure(实时监控RHEL系)sudogrep"Acceptedpassword"/var/log/auth.log(查找Ubuntu成功登录)sudojournalctl-usshd(使用systemd的系统的SSH日志)
进阶监控与安全实践:超越基础命令
-
实时监控与告警:
- 使用
watch命令:watch-n5'w'每5秒刷新一次w的输出。 - 部署集中式日志系统(ELKStack,Graylog,Splunk):将多台服务器的认证日志集中收集、索引、分析和告警,实现跨服务器用户登录行为监控。
- 配置实时告警:利用工具如
swatch、logwatch或SIEM系统,对关键事件(如root登录、非工作时间登录、多次失败登录、特定IP登录)触发邮件或IM告警。
- 使用
-
增强安全性的关键配置:
- SSH加固:
- 禁用root直接登录:
/etc/ssh/sshd_config中设置PermitRootLoginno,强制使用普通用户登录后su/sudo。 - 使用SSH密钥认证:完全禁用密码登录(
PasswordAuthenticationno),杜绝暴力破解。 - 限制用户/组登录:使用
AllowUsersuser1user2或AllowGroupsadmin。 - 更改默认SSH端口:
Port2222(避免自动化扫描)。 - 使用Fail2Ban:自动屏蔽短时间内多次登录失败的IP地址。
- 禁用root直接登录:
- 审计策略:
- 确保
/var/log/wtmp、/var/log/btmp、/var/log/secure/auth.log得到妥善轮转和保留足够长时间(符合合规要求)。 - 配置
auditd(LinuxAuditDaemon)进行更细粒度的系统调用审计(如记录特定文件访问、命令执行)。
- 确保
- 最小权限原则:严格限制用户权限,仅授予完成工作所必需的最小权限,大量使用
sudo并精细控制sudoers文件。
- SSH加固:
独立见解:登录监控的价值远超“看看谁在线”
查看登录用户不仅是日常运维操作,更是服务器安全态势感知的第一道防线,持续监控登录信息能让你:
- 即时发现入侵迹象:异常时间登录、未知IP登录、来源国家异常、用户执行可疑命令(
w的WHAT列)、大量失败登录(lastb)。 - 追踪内部操作:在故障排除或安全事件调查时,明确特定时间点谁在系统上做了什么。
- 满足合规要求:严格的审计规范(如等保、PCIDSS、GDPR)要求记录并定期审查用户登录活动。
- 优化资源管理:识别长时间空闲会话或僵尸进程,及时清理释放资源,自动化脚本定期清理
Inactive或Idle过长的会话可提升效率。
熟练掌握w,last,日志分析是服务器管理员的必备技能。将被动查看升级为主动监控和防御体系才是专业运维与安全管理的分水岭,通过加固SSH、部署集中日志分析、配置实时告警并遵循最小权限原则,你能显著提升服务器的安全基线,将用户登录信息转化为强大的安全情报来源。
你在日常运维中,最常用哪个命令查看用户登录?是否有遇到过通过登录监控发现安全威胁的实际案例?欢迎分享你的经验和最佳实践!