Назад | Перейти на главную страницу

Как я могу получить список открытых туннелей SSH?

Как я могу получить список открытых туннелей SSH?


Я использую клиент Mac OS X, подключенный к серверу FreeBSD. Я пытаюсь запросить открытые туннели на клиенте.

Вы можете использовать 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)

Последняя строка представляет туннель (см. Состояние СЛУШАТЬ).

В Ubuntu с установленными iptables и iptstate и стандартным портом ssh:

iptstate -D 22

каждая линия будет представлять открытый туннель.

Если вы пытаетесь выяснить, что использует туннель (ы) в одном ssh сессия, тип ~# в начале строки.

/sbin/ip tunnel list # replacement for the deprecated iptunnel command

Используя ответ 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