我想检测当前用户会话是否来自 SSH 连接 - 也就是说,用户是否实际坐在托管当前终端的计算机上,或者他是否通过 SSH 远程连接?
有没有一种简单的方法可以做到这一点,最好是通过 bash 脚本化方法?
一个快速的方法是检查是否SSH_TTY
变量是否已设置:
$ ssh lab\n$ echo $SSH_TTY \n/dev/pts/22\n
Run Code Online (Sandbox Code Playgroud)\n\n设置了一些与 SSH 相关的变量。另外两个是SSH_CLIENT
和SSH_CONNECTION
。也可以使用其中任何一个。
另一种方法是检查祖先进程是否是sshd
守护进程:
$ pstree -ps $$\ninit(1)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sshd(1170)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sshd(14153)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80sshd(14225)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80bash(24232)\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80pstree(27281)\n
Run Code Online (Sandbox Code Playgroud)\n\n相关阅读:
\n\n