如何检测SSH连接?

Sco*_*tus 2 ssh

出于某种原因,我有他以下场景:

在启动时,我正在启动一个脚本,该脚本等待给定的时间并检查在此时间窗口内是否建立了 SSH 连接。如果连接打开,脚本执行操作 A,否则它会终止 sshd 并执行 B。

检测开放连接的最佳方法是什么?(脚本可以用 Bash 或 Ruby 编写)

谢谢

Jam*_*s L 6

如果要检测当前的 SSH 会话,请使用lsof -i :22并查找它返回超过 2 行或 grep 的 ESTABLISHED:
[root@nemo ~]# lsof -i :22
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 3772 root 3u IPv6 9906 TCP *:ssh (LISTEN)
sshd 21376 root 3r IPv6 159072 TCP myserver:ssh->someip:27813 (ESTABLISHED)
sshd 21381 james 3u IPv6 159072 TCP myserver:ssh->someip:27813 (ESTABLISHED)

要查看是否打开了会话,请在 /var/log/secure(在 redhat/centos/fedora 上)中查找类似于以下内容的内容:
Sep 27 05:05:28 nemo sshd[21376]: Accepted password for james from some_ip port 27813 ssh2
如果您允许通过密码以外的方式进行身份验证,则日志条目可能会略有不同.