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

fou*_*ric 2 ssh bash

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

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

mur*_*uru 6

一个快速的方法是检查是否SSH_TTY变量是否已设置:

\n\n
$ ssh lab\n$ echo $SSH_TTY \n/dev/pts/22\n
Run Code Online (Sandbox Code Playgroud)\n\n

设置了一些与 SSH 相关的变量。另外两个SSH_CLIENTSSH_CONNECTION。也可以使用其中任何一个。

\n\n
\n\n

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

\n\n
$ 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

相关阅读:

\n\n\n