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

Как получить IP обратного туннеля

Я создал обратный туннель от сервера к конечной точке, используя команду:

ssh -R 127.0.0.1:4000:localhost:81 user@server.domain

Туннель был создан на стороне конечной точки, и он ведет от порта 4000 сервера к порту 81 конечной точки. Служба прослушивает этот порт, но это не важно. Я сделал это потому, что конечная точка находится за NAT, и мне нужно было получить к ней доступ извне.

Интересно, могу ли я получить IP-адрес конечной точки на стороне сервера. Был похожий вопрос:

Как найти IP-адрес источника обратного туннеля SSH?

но мой случай специфичен. Я не хочу вводить команды вручную, потому что к серверу будет много обратных туннелей, и я могу использовать только порт, к которому привязана конечная точка.

Другими словами: как получить IP-адрес туннеля на стороне конечной точки, используя только порт 4000 на стороне сервера? Я не могу найти никакой корреляции между портом 4000 на сервере с установленным SSH-соединением для туннельных целей.

netstat -plant (на сервере) показывает:

tcp        0      0 127.0.0.1:4000          0.0.0.0:*               LISTEN      30307/sshd: user
tcp        0      0 8.8.8.8:22              1.2.3.4:44874           ESTABLISHED 12531/sshd: user
tcp        0      0 8.8.8.8:22              15.16.17.18:44258       ESTABLISHED 30203/sshd: user
tcp        0      0 8.8.8.8:22              22.22.22.22:46696       ESTABLISHED 15639/sshd: user

Как видите, служба прослушивает порт 4000 (этот порт перенаправляется на порт 81 конечной точки, который здесь не отображается) и три соединения ssh. Один из них обслуживает тоннель. Но я не знаю, какой именно. 8.8.8.8 - это IP-адрес Сервера.

Взяв идентификатор процесса ssh из netstat,

lsof -p $pid -a -d 3

покажет IP другого конца соединения. Поскольку ssh может быть прыгающим, это может быть не последнее местоположение.