![我如何获取开放的 SSH 隧道列表?](https://linux22.com/image/542396/%E6%88%91%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%BC%80%E6%94%BE%E7%9A%84%20SSH%20%E9%9A%A7%E9%81%93%E5%88%97%E8%A1%A8%EF%BC%9F.png)
我如何获取开放的 SSH 隧道列表?
我正在使用 Mac OS X 客户端连接到 FreeBSD 服务器。我正在尝试在客户端上查询开放隧道。
答案1
您可以使用 lsof:
$ lsof -i tcp | grep ^ssh
ssh 2211 lcipriani 3r IPv4 20825 0t0 TCP lcipriani-laptop.local:49164->docsuite.cefla.com:22 (ESTABLISHED)
ssh 2223 lcipriani 3r IPv4 21945 0t0 TCP lcipriani-laptop.local:34471->gd-b-21.vps.redomino.com:22 (ESTABLISHED)
ssh 2640 lcipriani 3r IPv4 37488 0t0 TCP lcipriani-laptop.local:45693->makeda-xen1.redomino.com:22 (ESTABLISHED)
ssh 5279 lcipriani 3r IPv4 212324 0t0 TCP lcipriani-laptop.local:56491->67.227.82.162:22 (ESTABLISHED)
ssh 5279 lcipriani 4u IPv6 210281 0t0 TCP lcipriani-laptop:10000 (LISTEN)
ssh 5279 lcipriani 5u IPv4 210282 0t0 TCP localhost.localdomain:10000 (LISTEN)
最后一行代表一个隧道(查看状态LISTEN)。
答案2
在 Ubuntu 中,安装了 iptables 和 iptstate 以及标准 ssh 端口:
iptstate -D 22
每条线代表开放的隧道。
答案3
如果您尝试找出在单个会话中使用隧道的内容ssh
,请在行~#
首输入。
答案4
在脚本中使用 lcipriani 的答案:
sessions=$(lsof -i tcp | grep "^ssh" | grep ESTABLISHED)
if [ -z "sessions" ]; then
echo "no open ssh sessions"
else
echo "ssh sessions are open"
fi