检查和列出Linux中的活动SSH连接的6个命令
如何在Linux中检查活动的SSH连接。
显示SSH连接历史记录。
如何在Linux中显示活动的ssh会话。
列出Unix中所有活动的SSH连接。
找出任何Linux节点上所有当前活动的ssh连接。
哪些工具可以用来列出Linux中所有活动的ssh连接。
显示活动的SSH会话。
在Linux中使用日志文件检查ssh连接历史记录。
检查活动的SSH连接
Linux中提供了各种命令和工具,可用于检查Linux节点上的活动SSH连接或者会话。
在本文中,将介绍可用于获取活动SSH连接列表的工具列表。
如果我们知道其他任何命令来显示活动的ssh会话,请通过注释部分通知我。
1.使用ss命令
ss用于转储套接字统计信息。
它允许显示类似于netstat
的信息。
它可以显示比其他工具更多的TCP和状态信息。
我们将使用grep函数仅获取本地主机上的活动SSH会话列表
[root@node3 ~]# ss | grep -i ssh tcp ESTAB 0 0 10.0.2.32:ssh 10.0.2.31:37802 tcp ESTAB 0 64 10.0.2.32:ssh 10.0.2.2:49966 tcp ESTAB 0 0 10.0.2.32:ssh 10.0.2.30:56088
从上面的示例中,我们知道当前有3个主机连接到我们的node3. 我们具有来自10.0.2.31、10.0.2.30和10.0.2.2的活动SSH连接
2.使用last命令
" last"在文件"/var/log/wtmp"(或者由" -f"标志指定的文件)中进行搜索,并显示自创建该文件以来已登录(和退出)的所有用户的列表。
可以指定用户和tty的名称,在这种情况下,last将仅显示与参数匹配的条目。
使用此命令,我们还可以获得有关在服务器和客户端之间创建SSH连接所使用的用户的信息。
因此,下面我们知道从10.0.2.31开始的连接是使用'hynman'用户完成的,而对于其他两个主机,使用'root'用户来连接到node3.
[root@node3 ~]# last -a | grep -i still hynman pts/1 Fri Jan 31 16:58 still logged in 10.0.2.31 root pts/2 Fri Jan 31 16:50 still logged in 10.0.2.30 root pts/0 Fri Jan 31 09:17 still logged in 10.0.2.2
我其中输入字符串" still"以获得所有仍处于登录状态的模式。
所以现在我们知道我们有来自10.0.2.31、10.0.2.30和10.0.2.2的三个活动SSH连接
3.使用who命令
who是用来显示谁在Linux主机上登录的。
该工具还可以提供此信息
[root@node3 ~]# who root pts/0 2019-05-31 09:17 (10.0.2.2) root pts/1 2019-05-31 16:47 (10.0.2.31) root pts/2 2019-05-31 16:50 (10.0.2.30)
使用此命令,我们还可以获得与来自last
命令的类似信息。
现在,我们获得了用于从源主机连接到node3的用户详细信息,我们还获得了会话仍处于活动状态的终端信息。
我们通常将terminal看作是tty,但是其中我们看到terminal被称为pts,但是现在:tty和pts有什么区别?
如何在Linux中禁用或者启用单个tty终端控制台?
4.使用w命令
w显示有关机器上当前用户及其进程的信息。
这提供了比谁和最后一个命令更多的信息,并且还可以达到获取活动SSH连接列表的目的。
此外,它还为我们提供了有关这些会话的运行过程的信息。
使用w
命令,我们还将获得空闲时间详细信息,即会话空闲了多长时间。
如果SSH会话长时间处于空闲状态,则表示存在安全漏洞,建议我们必须终止此类空闲SSH会话,我们可以将Linux主机配置为自动终止此类空闲SSH会话。
[root@node3 ~]# w 17:01:41 up 7:44, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 10.0.2.2 09:17 9:41 0.31s 0.00s less -s hynman pts/1 10.0.2.31 16:58 3:06 0.03s 0.03s -bash root pts/2 10.0.2.30 16:50 5.00s 0.07s 0.02s w
5.使用netstat命令
与ss
类似,我们有netstat
命令来显示活动的ssh会话。
实际上,我们也可以说ss是netstat的新版本。
其中我们可以看到从远程主机到我们的本地主机节点3的所有已建立的SSH会话。
这些活动ssh连接中的一个或者某些连接也可能处于挂起状态,因此我们可以将主机配置为自动断开连接或者杀死Linux中这些挂起的或者无响应的ssh会话。
[root@node3 ~]# netstat -tnpa | grep 'ESTABLISHED.*sshd' tcp 0 0 10.0.2.32:22 10.0.2.31:37806 ESTABLISHED 10295/sshd: hynman tcp 0 0 10.0.2.32:22 10.0.2.2:49966 ESTABLISHED 4329/sshd: root@pts tcp 0 0 10.0.2.32:22 10.0.2.30:56088 ESTABLISHED 10125/sshd: root@pt
另请阅读:
如何在Linux中断开空闲的ssh会话或者保持空闲的ssh会话处于活动状态
6.使用ps命令
现在要显示活动的ssh会话,ps
命令可能无法像我们在本文中讨论的其他命令那样为我们提供准确的结果,但可以为我们提供更多其他信息,例如当前处于活动状态且已连接的SSHD进程的PID 。
# ps auxwww | grep sshd: | grep -v grep root 4329 0.0 0.1 154648 5512 ? Ss 09:17 0:00 sshd: root@pts/0 root 10125 0.0 0.1 154648 5532 ? Ss 16:50 0:00 sshd: root@pts/2 root 10295 0.0 0.1 154648 5480 ? Ss 16:58 0:00 sshd: hynman [priv] hynman 10301 0.0 0.0 156732 2964 ? S 16:58 0:00 sshd: hynman@pts/1
检查ssh连接历史
要获取ssh连接历史记录,我们始终可以检查SSHD日志以获取有关已连接或者已断开SSH会话的更多信息。
现在,sshd日志文件可能因发行版本而异。
在我的RHEL 7.4上,我的sshd日志存储在/var/log/sshd
里面