Я использую множество SSH-туннелей к различным серверам на моей машине с Linux (для туннелирования к базам данных, веб-серверам и т. Д.), И было бы очень удобно просматривать список текущих открытых туннелей с помощью сценария оболочки.
Я могу идентифицировать локальные соединения с помощью grep на netstat, например:
netstat -n --protocol inet | grep ':22'
но это не покажет мне удаленный порт, к которому он подключен (и, очевидно, включает в себя стандартные соединения SSH, которые не туннелированы)
ОБНОВЛЕНИЕ : ответы в порядке, но не показывает мне удаленный порт, к которому я подключен. Например, у меня часто есть туннель до mysql, скажем localhost: 3308, сопоставляющийся с: 3306 на сервере. Обычно я могу догадаться по выбранным локальным портам, но было бы неплохо иметь доступ к обоим.
Есть идеи?
источник
Ответы:
если вы хотите перечислить только туннели, созданные
ssh
:(это будет туннель -L 9090: localhost: 80)
если вы хотите увидеть туннели / соединения с
sshd
:ssh-daemon прослушивает порт 22 (последняя строка), порождаются 2 подпроцесса (первые 2 строки, логин 'user'), туннель -R, созданный на порту 5000, и туннель -L, который перенаправляет порт из моего ( локальный) машина для localhost: 80 (www).
источник
Попробуйте эту команду, это может быть полезно:
источник
не совсем решение вашей проблемы, но иногда удобно:
Из сеанса SSH:
показывает вам список всех открытых соединений через ваши туннели для этого сеанса.
источник
РЕДАКТИРОВАТЬ: пример комментария @akira:
Который может быть прочитан как: SSH (не SSHd) прослушивает локальный порт TCP 1443.
источник
-p
показывает только ваши собственные процессы (все процессы по корню). Кроме того, эта команда показываетsshd
тоже.-l
-R
туннели, если они не используются. Но верно, если в использовании, вы можете поймать их без-l
Это лучший результат Google по этому вопросу, поэтому я поставлю свой ответ здесь. Я не спал всю ночь, фильтруя результаты, и придумал длинную сложную команду, которая показывает вам только ваши обратные туннели ssh в этом формате:
publicipaddress: remoteforwardedport
Вот код, я использую Ubuntu Server 12. Я использую обратные туннели ssh, которые перенаправляют локальный порт 5900 на мой общедоступный сервер ssh, и эта изящная команда показывает все мои публичные ip-адреса с удаленным портом.
источник
Образец вывода:
источник
источник
источник
Поскольку я не люблю lsof, я предлагаю альтернативный метод (другой парень научил меня :)):
$ netstat -l | grep ssh
Таким образом, вы показываете созданные ssh-туннели
ssh
, которые открываются в режиме LISTEN (и по умолчанию они опускаютсяnetstat
).источник