Я использую много туннелей SSH к различным серверам на моей машине Linux (для туннелирования к базам данных, веб-серверы и т.д.), и было бы действительно удобно просмотреть список текущих открытых туннелей с помощью сценария оболочки.
Я могу определить локальные соединения через grep на netstat вроде:
netstat -n --protocol inet | grep ':22'
но это не покажет мне удаленный порт его связанное с (и очевидно включает стандартные соединения SSH, которые не туннелированы),
ОБНОВЛЕНИЕ: ответы прекрасны, но не показывают мне удаленный порт, с которым я подключен. Например, я часто имею туннель до mysql, говорю localhost:3308, отображающийся на:3306 на сервере. Обычно я могу предположить локальными портами, которые я выбрал, но был бы хорош иметь доступ к обоим.
Какие-либо идеи?
если Вы только хотите перечислить туннели, созданные ssh
:
% sudo lsof -i -n | egrep '\<ssh\>'
ssh 19749 user 3u IPv4 148088244 TCP x.x.x.x:39689->y.y.y.y:22 (ESTABLISHED)
ssh 19749 user 4u IPv6 148088282 TCP [::1]:9090 (LISTEN)
ssh 19749 user 5u IPv4 148088283 TCP 127.0.0.1:9090 (LISTEN)
(который был бы-L 9090:localhost:80 туннель),
если Вы хотите видеть туннели / связи, установленные с a sshd
:
% sudo lsof -i -n | egrep '\<sshd\>'
sshd 15767 root 3u IPv4 147401205 TCP x.x.x.x:22->y.y.y.y:27479 (ESTABLISHED)
sshd 15842 user 3u IPv4 147401205 TCP x.x.x.x:22->y.y.y.y:27479 (ESTABLISHED)
sshd 15842 user 9u IPv4 148002889 TCP 127.0.0.1:33999->127.0.0.1:www (ESTABLISHED)
sshd 1396 user 9u IPv4 148056581 TCP 127.0.0.1:5000 (LISTEN)
sshd 25936 root 3u IPv4 143971728 TCP *:22 (LISTEN)
ssh-демон слушает на порте 22 (последняя строка), 2 подпроцесса порождены (сначала 2 строки, вход в систему 'пользователя'), туннель-R, созданный на порте 5000 и туннель-L который вперед порт от моей (локальной) машины до localhost:80 (www).
netstat -tpln | grep ssh
Править: пример для комментария @akira:
(header added, tested on Debian wheezy)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:1443 0.0.0.0:* LISTEN 4036/ssh
Который может быть считан как: SSH (не SSHd) слушает локальный порт TCP 1443.