Eu uso muitos túneis SSH para vários servidores na minha máquina linux (para tunelamento de bancos de dados, servidores web etc.) e seria realmente útil exibir uma lista dos túneis abertos atuais por meio de um script de shell.
Posso identificar conexões locais por meio de um grep no netstat ao longo das linhas de:
netstat -n --protocol inet | grep ':22'
mas isso não me mostrará a porta remota à qual está conectada (e obviamente inclui conexões SSH padrão que não são tuneladas)
ATUALIZAÇÃO : As respostas são boas, mas não estão me mostrando a porta remota à qual estou conectado. Por exemplo, geralmente tenho um túnel para o mysql, digamos localhost: 3308 mapeando para: 3306 no servidor. Normalmente, posso adivinhar pelas portas locais que escolhi, mas seria bom ter acesso a ambas.
Alguma ideia?
fonte
Respostas:
se você deseja apenas listar túneis criados por
ssh
:(isso seria um túnel -L 9090: localhost: 80)
se você quiser ver os túneis / conexões feitos para
sshd
:o ssh-daemon escuta na porta 22 (última linha), são gerados 2 subprocessos (primeiras 2 linhas, logon do 'usuário'), um túnel -R criado na porta 5000 e um túnel -L que encaminha uma porta do meu ( local) para localhost: 80 (www).
fonte
Experimente este comando, pode ser útil:
fonte
não é exatamente a solução para o seu problema, mas também é útil algumas vezes:
De dentro de uma sessão ssh:
mostra uma lista de todas as conexões abertas nos seus túneis para essa sessão.
fonte
EDIT: exemplo para o comentário @akira:
Que pode ser lido como: SSH (não SSHd) está escutando a porta TCP local 1443.
fonte
-p
mostra apenas seus próprios processos (todos os processos por raiz). Além disso, esse comandosshd
também é exibido.-l
-R
túneis se não estiver em uso. Mas, certo, se estiver em uso, você pode pegá-los sem o-l
Este é o principal resultado do Google para esta pergunta, então colocarei minha resposta aqui. Fiquei acordado a noite toda filtrando os resultados e criei um comando longo e complexo que mostra apenas seus túneis ssh reversos neste formato:
publicipaddress: remoteforwardedport
Aqui está o código, estou executando o Ubuntu Server 12. Estou executando túneis ssh reversos que encaminham a porta local 5900 para meu servidor público ssh, e este comando bacana mostra todos os meus endereços IP públicos com a porta remota.
fonte
Saída de amostra:
fonte
fonte
fonte
Como não gosto de lsof, sugiro um método alternativo (outro cara me ensinou :)):
$ netstat -l | grep ssh
Dessa forma, você mostra os túneis ssh criados por
ssh
que são abertos no modo LISTEN (e são omitidos por padrão pornetstat
).fonte