如何获取已SSH登录主机的连接IP地址
如何获取已SSH登录主机的连接IP地址
这个问题我之前也碰到过,尤其是在NAT环境下,主机自身的内网IP和你用来SSH连接的对外IP完全不是一回事——你用hostname -I或ifconfig查到的是主机本地网卡的IP,而你实际连接的是NAT网关映射后的地址,所以肯定对不上。给你几个实用的办法来拿到你需要的那个连接IP:
查看当前登录会话的来源IP
直接在登录后的主机上执行who am i或者w命令,输出里会包含你的登录来源信息。比如:username pts/0 2024-05-20 14:30 (10.49.x.xxx)括号里的
10.49.x.xxx就是你用来SSH连接的那个IP。查看SSH服务的登录日志
不同发行版的日志位置略有不同:- Debian/Ubuntu系列:执行
cat /var/log/auth.log | grep sshd - CentOS/RHEL系列:执行
cat /var/log/secure | grep sshd
日志里会有类似这样的记录:
sshd[12345]: Accepted publickey for username from 10.49.x.xxx port 54321 ssh2这里的
10.49.x.xxx就是你要找的连接IP。- Debian/Ubuntu系列:执行
查看当前活跃的SSH连接
用ss命令(比netstat更高效)查看当前的TCP连接:ss -tnp | grep sshd输出会类似:
ESTAB 0 0 192.168.0.10:22 10.49.x.xxx:54321 users:(("sshd",pid=12345,fd=3))右边的
10.49.x.xxx就是你的客户端连接到主机时用的IP地址。
简单来说,因为NAT的存在,主机本身不知道自己对外暴露的那个IP,只能通过记录你的连接会话信息来反推这个地址,上面几个方法都能帮你快速拿到它。
备注:内容来源于stack exchange,提问作者KARTHIK M S
相关产品推荐
相关产品推荐

