【发布时间】:2016-09-25 12:25:39
【问题描述】:
可以通过环境变量(例如 SSH_CONNECTION)访问正在连接的 SSH 客户端的 IP 地址,如
中所述Find the IP address of the client in an SSH session
不过,在 GNU 屏幕会话中,这些环境变量是由启动屏幕的人定义的。对于稍后进入已经存在的屏幕会话的人(例如从另一台主机),是否有任何方法也可以获取 SSH 连接信息?
我想不出一种方法来确定这一点,但是这在例如不同人之间共享屏幕会话的情况下很有用。
【问题讨论】:
-
链接的问题有几个答案,有些涉及环境变量以外的东西。
-
可能是这样,但我仍然想知道是否有办法找出谁在屏幕会话中调用了某个脚本,尤其是。如果屏幕会话可能由不同的人共享。
-
您可以向上遍历当前进程的 PPID 并查看它们的环境变量和标准句柄(在 Linux 上通过
/proc)。 -
@n.m. - 我仍然不明白这将如何帮助我区分不同的客户。让我们假设两个客户端(两个用户)通过 SSH 从不同的 IP 连接到机器,比如说 root。如果两者都在此处的给定屏幕会话 (screen -x) 中处于活动状态,并且其中一个在此处调用脚本 - 有没有办法告诉他们中的哪一个(即通过 SSH 客户端 IP)实际上这样做了?在这种情况下,PPID 将是相同的。
-
嗯,不,那是不可能的。这就像让几个人在您的键盘上键入,然后试图确定谁键入了什么。一个人可以输入
l,另一个人是s,而另一个人按下回车键,谁调用了ls?和screen完全一样。
标签: linux networking ssh ip-address gnu-screen