在Linux系统中,可以通过多种方式查看SSH连接的时长。以下是一些常用的方法:
who
命令who
命令可以显示当前登录的用户及其相关信息,包括登录时间。
who
输出示例:
user pts/0 2023-10-01 10:00 (:0)
user pts/1 2023-10-01 11:00 (:0)
通过查看输出中的时间,可以手动计算连接的时长。
w
命令w
命令提供了更详细的当前登录用户信息,包括登录时间和空闲时间。
w
输出示例:
10:15:23 up 1 day, 3:20, 2 users, load average: 0.10, 0.05, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user pts/0 :0 10:00 1:23m 0.10s 0.03s -bash
user pts/1 :0 11:00 10:15 0.15s 0.10s -bash
通过查看IDLE
列,可以了解每个连接的空闲时间。
last
命令last
命令可以显示用户的登录记录,包括登录时间和退出时间。
last
输出示例:
user pts/0 :0 Mon Oct 1 10:00 still logged in
user pts/1 :0 Mon Oct 1 11:00 still logged in
通过查看输出中的时间,可以了解每个连接的开始时间和当前状态(是否仍在连接中)。
journalctl
命令如果系统启用了systemd日志,可以使用journalctl
命令查看SSH连接的详细日志信息。
journalctl _SYSTEMD_UNIT=sshd.service
输出示例:
-- Logs begin Oct 01 10:00:00 hostname, end Oct 01 12:00:00 hostname. --
Oct 01 10:00:00 hostname sshd[1234]: Accepted password for user from 192.168.1.1 port 54321 ssh2
Oct 01 10:00:00 hostname sshd[1234]: pam_unix(sshd:session): session opened for user user by (uid=0)
通过查看日志中的时间戳,可以计算出连接的时长。
可以编写一个简单的脚本来定期记录SSH连接的时间,并计算连接的时长。
#!/bin/bash
LOG_FILE="/var/log/ssh_connections.log"
# 记录当前SSH连接
who | awk '{print $1, $2, $3}' >> $LOG_FILE
# 计算连接时长
while read -r line; do
user=$(echo $line | awk '{print $1}')
tty=$(echo $line | awk '{print $2}')
login_time=$(echo $line | awk '{print $3}')
current_time=$(date +"%Y-%m-%d %H:%M")
duration=$(($(date -d "$current_time" +%s) - $(date -d "$login_time" +%s)))
echo "User: $user, TTY: $tty, Login Time: $login_time, Duration: $duration seconds" >> /var/log/ssh_connection_durations.log
done < $LOG_FILE
将上述脚本保存为ssh_duration.sh
,并使用cron
定期执行,可以记录每个SSH连接的时长。
以上方法可以帮助你在Linux系统中查看SSH连接的时长。根据具体需求和环境,可以选择适合的方法进行监控和记录。
领取专属 10元无门槛券
手把手带您无忧上云