在屏幕会话中访问SSH客户端IP地址【JAVA教程】

!
也想出现在这里? 联系我们
信息

在屏幕会话中访问SSH客户端IP地址,第1张

概述在屏幕会话中访问SSH客户端IP地址

通过环境variables(如SSH_CONNECTION)访问连接SSH客户端的IP地址是可能的,如下所述

在SSH会话中查找客户端的IP地址

在GNU屏幕会话中,这些环境variables是由开始屏幕的人定义的。 有没有什么办法可以获得SSH连接信息,对于稍后进入已经存在的屏幕会话的人,比如从另一个主机?

我想不出一种方法来确定这一点,但是,例如,在屏幕会话由不同的人共享的情况下,这可能是有用的。

无法连接到主机在C:主机名未find(11001)在windows,DNS问题?

linux:检索每个接口发送/接收的数据包计数器(以太网,ipv4,ipv6)

在访问时自动发送魔术包

是否有可能通过编程的方式找出哪个进程正在通过networkinglocking文件

VirtualBox guest不能parsing主机的名字,但是git可以

在Python中处理多个networking接口

windows XP默认路由

windowsnetworking名称parsing

处理超过1024个文件描述符,在linux上使用C语言

你怎么能有一个TCP连接回同一个端口?

如果屏幕会话以root身份启动,您可以但不会完全可靠

如果两个用户在同一个屏幕窗口中键入,他们将在同一个shell中进行交互。 可以写一个命令。 另一个可以按<enter>键。

您必须访问环境变量SSH_CONNECTION (或更好的SSH_CLIENT ),只有在root用户的情况下,或者在屏幕会话中使用同一用户,才能访问该变量。

假设你是屏幕会话中的root用户,可以使用ps命令并查找最后一个活动会话,从而知道在屏幕会话中活动的最后一个用户。

ps h -C screen katime -o pID,user

通过使用pID和访问/proc/<pID>/environ文件,您可以获得SSH_CLIENT变量。

sed -z \’/SSH_CLIENT/p;d\’ /proc/`ps h -C screen katime -o pID |head -1`/environ –> SSH_CLIENT=257.31.120.12

所有这一切都假设你的屏幕是以root身份执行的

您也可以选择记录所有活动连接。 对于这样的需求,我建议你存储连接的完整列表和他们最后的活动。

ps eh -C screen kstime -o pID,atime | while read pID stime; do echo -n \”$stime: \”; gawk -v \’RS=\’ -F= \’$1==\”SSH_CLIENT\” {print $2}\’ /proc/$pID/environ; done Result: 00:00:00: 257.31.120.12 61608 22 00:07:11: 258.1.2.3.4 49947 22

请注意,如果您发现它更容易,也可以解析ps eh -C screen kstime -o args命令的结果。

编辑:

这是一个正在运行的Debian命令,让所有用户连接到同一个屏幕会话:

find /var/run/screen/ -name $(pstree -sp $$ |sed \’s/.*screen(([0-9]*)).*/1/;q\’).* -printf \”%hn\” | cut -f2 -d-

如果sshd是连接服务器的唯一方式,您可以检查last将列出所有连接所有IP addresses或hostnames的命令的输出。

ec2-user]# last ec2-user pts/0 115.250.185.183 Sun May 29 13:49 still logged in ec2-user pts/0 115.250.140.241 Sat May 28 07:26 – 10:15 (02:48) root pts/4 113.21.68.105 Tue May 3 10:15 – 10:15 (00:00)

另外(在linux上),您可以检查/var/log/secure ,即使sshd通常记录所有连接的所有细节,即使它们没有成功登录也是如此。

如果你正在尝试支持多显示模式(\’screen -x\’),那么正如上面有人所说的,你很可能不走运。

另一方面,如果你可以假设单用户模式,那么你可以为屏幕命令创建一个包装/别名,它将一个环境变量带到屏幕上(参见\’screen -X stuff …\’); 在这种情况下,您只需传递具有适当值的SSH_CLIENT即可。

如果你可以假设一个给定的用户名来自一个单一的位置(或者,如果多个位置,那么只需选择最近的),那么你可以做一些grep / sed输出\’最后\’的命令。

clIEnt_ip=`last -ai | grep \”still logged in\” | grep \”$USER \” | grep -v \’0.0.0.0\’ | tail -n 1 | sed \’s/.* //g\’` echo \”Hello $clIEnt_ip\”

总结

以上是内存溢出为你收集整理的在屏幕会话中访问SSH客户端IP地址全部内容,希望文章能够帮你解决在屏幕会话中访问SSH客户端IP地址所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞165 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容