如何通过 bash 检测当前会话是否为 SSH 会话?

如何通过 bash 检测当前会话是否为 SSH 会话?

我想检测当前用户会话是否来自 SSH 连接 - 也就是说,用户是否实际坐在托管当前终端的计算机旁,或者是否通过 SSH 远程连接?

有没有简单的方法可以做到这一点,最好是通过 bash 脚本方法?

答案1

一种快捷方式是检查SSH_TTY变量是否已设置:

$ ssh lab
$ echo $SSH_TTY 
/dev/pts/22

设置了一些与 SSH 相关的变量。另外两个SSH_CLIENTSSH_CONNECTION。它们都可以使用。


另一种方法是检查祖先进程是否是sshd守护进程:

$ pstree -ps $$
init(1)───sshd(1170)───sshd(14153)───sshd(14225)───bash(24232)───pstree(27281)

相关阅读:

相关内容