检查和列出Linux中的活动SSH连接的6个命令

时间:2020-01-09 10:42:30  来源:igfitidea点击:

如何在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里面