如何从服务端查找SSH反向隧道对应的连接信息
如何从服务端查找SSH反向隧道对应的连接信息
嘿,我来帮你搞定这个问题!你在客户端通过ssh -fNR 3389:127.0.0.1:3389 user@remotehost创建了反向隧道,现在想在服务端找到对应的端口和连接信息,这几个方法绝对好用:
- 第一步:定位反向隧道在服务端的监听端口
反向隧道会在服务端打开你指定的端口(这里是3389)来监听请求,你可以用ss命令直接查找这个端口的监听状态:
ss -tulpn | grep ":3389"
输出里会显示LISTEN状态,进程列会标注是sshd,这就确认了这个端口是由SSH反向隧道创建的,还能看到对应的进程ID(PID)。
- 第二步:找到对应反向隧道的SSH会话进程
每个反向隧道都会对应服务端sshd的一个子进程,你可以用ps命令筛选出相关的会话:
ps aux | grep "sshd: user@notty"
这里的notty表示这个SSH会话没有终端(反向隧道通常都是无终端的后台会话),找到的进程就是对应你那个反向隧道的会话进程,结合第一步的PID就能完美对应上。
- 第三步:查看反向隧道对应的客户端连接IP
如果想知道这个反向隧道是从哪个客户端IP连过来的,可以用ss命令结合刚才找到的PID:
ss -ntp | grep "<刚才找到的PID>"
这样就能看到服务端和客户端之间的连接信息,包括客户端的公网IP和连接端口。
另外,用lsof命令也能快速定位端口对应的进程:
lsof -i :3389
输出里会显示监听该端口的进程是sshd,以及相关的进程细节。
总结一下,服务端上的反向隧道核心特征就是:由sshd进程监听指定端口,对应无终端的SSH会话,且连接来自客户端的主动发起。
备注:内容来源于stack exchange,提问作者wangwei
相关产品推荐
相关产品推荐

