У меня есть несколько машин, подключающихся к одному серверу по обратным туннелям SSH. Итак, на каждой машине выполняется команда, подобная следующей:

while true; do
    ssh -X -R 19999:localhost:22 www.sern.pro
    sleep 30
done

19999 здесь будет варьироваться для разных соединений (например, 19990 , 19991 и т.д.). Эти обратные SSH-соединения могут быть доступны с сервера с помощью команды, подобной следующей:

ssh -X localhost -p 19999

Как сервер может отображать список активных обратных соединений SSH? Я попытался использовать netstat но это требует предварительного знания используемых локальных портов и не дает понять, что это обратное соединение SSH:

# netstat --all --timers | grep "19999"
tcp        0      0 localhost.localdo:19999 *:*                     LISTEN      off (0.00/0/0)
tcp6       0      0 ip6-localhost:19999     [::]:*                  LISTEN      off (0.00/0/0)

Следуя предложению @ frank-thomas, я попытался использовать команду netstat --all --timers --program --numeric | grep ssh для поиска нестандартных процессов SSH. Когда я делаю это, после списков TCP netstat я получаю списки UNIX, подобные следующим:

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name         Path
unix  2      [ ]         DGRAM                    64179539 28569/sshd: username [pr P475
unix  3      [ ]         STREAM     CONNECTED     60024486 14205/sshd: username [pr P60024485
unix  3      [ ]         STREAM     CONNECTED     62232808 5088/sshd: username [pri P62232133
unix  2      [ ]         DGRAM                    60024422 14205/sshd: username [pr P475
unix  3      [ ]         STREAM     CONNECTED     64180927 28569/sshd: username [pr P64180926
unix  3      [ ]         STREAM     CONNECTED     8303     3911/sshd                P8304
unix  3      [ ]         STREAM     CONNECTED     60024487 14205/sshd: username [pr P60024488
unix  2      [ ]         DGRAM                    62232598 5088/sshd: username [pri P475
unix  3      [ ]         STREAM     CONNECTED     64180931 28569/sshd: username [pr P64180932
unix  3      [ ]         STREAM     CONNECTED     62232798 5088/sshd: username [pri P62232797

Как эти данные можно интерпретировать, чтобы получить список портов обратного туннеля SSH, используемых на сервере? Как из этого можно получить число, например 19999?

2 ответа2

0

Вы можете получить это используя:

netstat -anp | egrep '127.0.0.1:*(LISTEN|.*)' | Сортировать

Эта команда выводит список всех соединений с активными портами и сортирует их.

Если у вас есть диапазон портов, который включает в себя, например, только порты от 40000 до 45000, вы можете добавить 4 в egrep, например, «127.0.0.1:4*(LISTEN|.*)», чтобы получить только те, которые запускаются с 4 вместо получения всех портов.

0

Вы могли бы использовать

sudo ss -ltp | grep sshd

перечислить все TCP-порты, открытые для прослушивания процессом sshd , включая прослушиватель по умолчанию (обычно в tcp/22 , но в других местах, если вы решили настроить альтернативный порт для демона sshd ). Затем вы можете проверить перечисленные идентификаторы PID, чтобы определить, какой пользователь открыл соединение ssh прослушивающее каждый порт.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .