我有一个远程服务器,我正在服务器中编写一个脚本,并希望它仅在我通过 SSH 时触发。我想到使用$SSH_CONNECTION
and$SSH_TTY
来达到这个目的。我发现当我没有使用 ssh 而是使用 VNC 客户端进入服务器(我的服务器上运行着 vnc)时,VNC 中创建的终端仍然设置了这两个环境变量,并且$SSH_CONNECTION
在两种情况下具有相同的值。我找到了一种解决方法来进一步过滤ps -o comm= -p $PPID
并查看父进程是否为 sshd,但我想知道为什么设置变量
答案1
为什么要设置 SSH 变量?
设置这些变量很可能是因为您的 VNC 连接是通过 SSH 连接建立隧道的。这样做有充分的理由。 VNC 使用RFB协议哪个不安全。通过 SSH 建立 VNC 隧道可提高安全性。
为什么 SSH_CONNECTION 变量相同?
SSH_CONNECTION 变量由四个值组成:(1) 客户端 IP 地址、(2) 客户端端口号、(3) 服务器 IP 地址和 (4) 服务器端口号。对于与特定服务器通信的特定客户端,唯一可能从一个会话到下一个会话发生变化的是客户端端口号。是否改变要看情况。例如可以指令SSH重用现有连接。这样做是为了速度。如果是这样,那么多个连接可能都共享一个端口。